home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60c / MEMORY.LST < prev    next >
File List  |  1999-01-03  |  129KB  |  3,283 lines

  1. MEMORY MAP            Release 60        Last change 03jan99
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3.  
  4. --------H-M00000000--------------------------
  5. MEM 0000h:0000h R - INTERRUPT VECTOR TABLE
  6. Size:    1024 BYTEs
  7. Note:    see also the main interrupt list
  8. --------b-M0000031D--------------------------
  9. MEM 0000h:031Dh - 1989 AMI 386sx BIOS - USER-DEFINABLE TYPE 47 HARD DISK PARMS
  10. Size:    16 BYTEs
  11. Note:    these fields are used if the AMI BIOS setup is set to use the top of
  12.       the interrupt table for the extended BIOS data area
  13. SeeAlso: MEM 0000h:032Dh,INT 41
  14. --------b-M0000032D--------------------------
  15. MEM 0000h:032Dh - 1989 AMI 386sx BIOS - USER-DEFINABLE TYPE 48 HARD DISK PARMS
  16. Size:    16 BYTEs
  17. Note:    these fields are used if the AMI BIOS setup is set to use the top of
  18.       the interrupt table for the extended BIOS data area
  19. SeeAlso: MEM 0000h:031Dh,INT 46
  20. --------B-M00000400--------------------------
  21. MEM 0000h:0400h - BIOS DATA AREA
  22. Size:    256 BYTEs
  23. Note:    see also the MEM 0040h:xxxxh entries
  24. ----------M00000500--------------------------
  25. MEM 0000h:0500h - DATA AREA
  26. Size:    256 BYTEs
  27. --------D-M00000600--------------------------
  28. MEM 0000h:0600h - MS-DOS 1.x LOAD ADDRESS
  29. --------D-M00000700--------------------------
  30. MEM 0000h:0700h - MS-DOS 2+ LOAD ADDRESS
  31. --------S-M00400000--------------------------
  32. MEM 0040h:0000h - BASE I/O ADDRESS OF FIRST SERIAL I/O PORT
  33. Size:    WORD
  34. Notes:    the BIOS sets this word to zero if is unable to find any serial ports
  35.       at the addresses it is programmed to check at boot
  36.     DOS and BIOS serial device numbers may be redefined by re-assigning
  37.       these values of the base I/O addresses stored here
  38. SeeAlso: MEM 0040h:0002h,MEM 0040h:0004h,MEM 0040h:0006h,MEM 0040h:0008h
  39. SeeAlso: MEM 0040h:007Ch,INT 14/AH=00h,PORT 03F8h"SERIAL"
  40. --------S-M00400002--------------------------
  41. MEM 0040h:0002h - BASE I/O ADDRESS OF SECOND SERIAL I/O PORT
  42. Size:    WORD
  43. Note:    the BIOS sets this word to zero if is unable to find more than one
  44.       serial port at the addresses it is programmed to check at boot
  45. SeeAlso: MEM 0040h:0000h,MEM 0040h:0004h,MEM 0040h:0006h,MEM 0040h:000Ah
  46. SeeAlso: MEM 0040h:007Dh,INT 14/AH=00h,PORT 02F8h"SERIAL"
  47. --------S-M00400004--------------------------
  48. MEM 0040h:0004h - BASE I/O ADDRESS OF THIRD SERIAL I/O PORT
  49. Size:    WORD
  50. Note:    the BIOS sets this word to zero if is unable to find more than two
  51.       serial ports at the addresses it is programmed to check at boot
  52. SeeAlso: MEM 0040h:0000h,MEM 0040h:0002h,MEM 0040h:0006h,MEM 0040h:000Ch
  53. SeeAlso: MEM 0040h:007Eh,PORT 03E8h"SERIAL"
  54. --------S-M00400006--------------------------
  55. MEM 0040h:0006h - BASE I/O ADDRESS OF FOURTH SERIAL I/O PORT
  56. Size:    WORD
  57. Note:    the BIOS sets this word to zero if is unable to find more than three
  58.       serial ports at the addresses it is programmed to check at boot
  59. SeeAlso: MEM 0040h:0000h,MEM 0040h:0002h,MEM 0040h:0004h,MEM 0040h:0008h
  60. SeeAlso: MEM 0040h:007Fh,PORT 02E8h"SERIAL"
  61. --------P-M00400008--------------------------
  62. MEM 0040h:0008h - BASE I/O ADDRESS OF FIRST PARALLEL I/O PORT
  63. Size:    WORD
  64. Notes:    the BIOS POST routine fills in the parallel port address fields in
  65.       turn as it finds parallel ports.  All fields beyond the last one
  66.       for which a valid parallel port was found are set to zero.
  67.     the BIOS INT 17 handler uses these fields to address the parallel
  68.       ports
  69. SeeAlso: MEM 0040h:0000h,MEM 0040h:000Ah,MEM 0040h:000Ch,INT 17/AH=00h
  70. SeeAlso: PORT 0278h"PRINTER",PORT 03BCh"PRINTER"
  71. --------P-M0040000A--------------------------
  72. MEM 0040h:000Ah - BASE I/O ADDRESS OF SECOND PARALLEL I/O PORT
  73. Size:    WORD
  74. Note:    zero if fewer than two parallel ports installed
  75. SeeAlso: MEM 0040h:0002h,MEM 0040h:0008h,MEM 0040h:000Ch,PORT 0278h"PRINTER"
  76. SeeAlso: PORT 0378h"PRINTER",INT 17/AH=00h
  77. --------P-M0040000C--------------------------
  78. MEM 0040h:000Ch - BASE I/O ADDRESS OF THIRD PARALLEL I/O PORT
  79. Size:    WORD
  80. Note:    zero if fewer than three parallel ports installed
  81. SeeAlso: MEM 0040h:0004h,MEM 0040h:0008h,MEM 0040h:000Ah,MEM 0040h:000Eh
  82. SeeAlso: PORT 0378h"PRINTER",INT 17/AH=00h
  83. --------P-M0040000E--------------------------
  84. MEM 0040h:000Eh - BASE I/O ADDRESS OF FOURTH PARALLEL I/O PORT (pre-PS/2)
  85. Size:    WORD
  86. Note:    zero if fewer than four parallel ports installed
  87. SeeAlso: MEM 0040h:0008h,MEM 0040h:000Ah,MEM 0040h:000Eh"BIOS DATA"
  88. SeeAlso: PORT 0378h"PRINTER",INT 17/AH=00h
  89. --------B-M0040000E--------------------------
  90. MEM 0040h:000Eh - SEGMENT OF EXTENDED BIOS DATA SEGMENT (PS/2, newer BIOSes)
  91. Size:    WORD
  92. SeeAlso: MEM 0040h:000Eh"PARALLEL",INT 15/AH=C1h
  93.  
  94. Format of Extended BIOS Data Area (IBM):
  95. Offset    Size    Description    (Table M0001)
  96.  00h    BYTE    length of EBDA in kilobytes
  97.  01h 15 BYTEs    reserved
  98.  17h    BYTE    number of entries in POST error log (0-5)
  99.  18h  5 WORDs    POST error log (each word is a POST error number)
  100.  22h    DWORD    Pointing Device Driver entry point
  101.  26h    BYTE    Pointing Device Flags 1 (see #M0002)
  102.  27h    BYTE    Pointing Device Flags 2 (see #M0003)
  103.  28h  8 BYTEs    Pointing Device Auxiliary Device Data
  104.  30h    DWORD    Vector for INT 07h stored here during 80387 interrupt
  105.  34h    DWORD    Vector for INT 01h stored here during INT 07h emulation
  106.  38h    BYTE    Scratchpad for 80287/80387 interrupt code
  107.  39h    WORD    Timer3: Watchdog timer initial count
  108.  3Bh    BYTE    ??? seen non-zero on Model 30
  109.  3Ch    BYTE    ???
  110.  3Dh 16 BYTEs    Fixed Disk parameter table for drive 0 (for older machines
  111.           which don't directly support the installed drive)
  112.  4Dh 16 BYTEs    Fixed Disk parameter table for drive 1 (for older machines
  113.           which don't directly support the installed drive)
  114.  5Dh-67h    ???
  115.  68h    BYTE    cache control
  116.         bits 7-2 unused (0)
  117.         bit 1: CPU cache failed test
  118.         bit 0: CPU cache disabled
  119.  69h-6Bh    ???
  120.  6Ch    BYTE    Fixed disk: (=FFh on ESDI systems)
  121.             bits 7-4: Channel number 00-0Fh
  122.             bits 3-0: DMA arbitration level 00-0Eh
  123.  6Dh    BYTE    ???
  124.  6Eh    WORD    current typematic setting (see INT 16/AH=03h)
  125.  70h    BYTE    number of attached hard drives
  126.  71h    BYTE    hard disk 16-bit DMA channel
  127.  72h    BYTE    interrupt status for hard disk controller (1Fh on timeout)
  128.  73h    BYTE    hard disk operation flags
  129.         bit 7: controller issued operation-complete INT 76h
  130.         bit 6: controller has been reset
  131.         bits 5-0: unused (0)
  132.  74h    DWORD    old INT 76h vector
  133.  78h    BYTE    hard disk DMA type
  134.         typically 44h for reads and 4Ch for writes
  135.  79h    BYTE    status of last hard disk operation
  136.  7Ah    BYTE    hard disk timeout counter
  137.  7Bh-7Dh
  138.  7Eh  8 WORDs    storage for hard disk controller status
  139.  8Eh-E6h
  140.  E7h    BYTE    floppy drive type
  141.         bit 7: drive(s) present
  142.         bits 6-2: unused (0)
  143.         bit 1: drive 1 is 5.25" instead of 3.5"
  144.         bit 0: drive 0 is 5.25"
  145.  E8h  4 BYTEs    ???
  146.  ECh    BYTE    hard disk parameters flag
  147.         bit 7: parameters loaded into EBDA
  148.         bits 6-0: unused (0)
  149.  EDh    BYTE    ???
  150.  EEh    BYTE    CPU family ID (03h = 386, 04h = 486, etc.) (see INT 15/AH=C9h)
  151.  EFh    BYTE    CPU stepping (see INT 15/AH=C9h)
  152.  F0h 39 BYTEs    ???
  153. 117h    WORD    keyboard ID (see INT 16/AH=0Ah)
  154.         (most commonly 41ABh)
  155. 119h    BYTE    ???
  156. 11Ah    BYTE    non-BIOS INT 18h flag
  157.         bits 7-1: unused (0)
  158.         bit 0: set by BIOS before calling user INT 18h at offset 11Dh
  159. 11Bh  2 BYTE    ???
  160. 11Dh    DWORD    user INT 18h vector if BIOS has re-hooked INT 18h
  161. 121h and up:    ??? seen non-zero on Model 60
  162. 3F0h    BYTE    Fixed disk buffer (???)
  163. SeeAlso: #M0004
  164.  
  165. Bitfields for Pointing Device Flags 1:
  166. Bit(s)    Description    (Table M0002)
  167.  7    command in progress
  168.  6    resend byte (FAh) received
  169.  5    acknowledge byte (FEh) received
  170.  4    error byte (FCh) received
  171.  3    unexpected value received
  172.  2-0    index count for auxiliary device data at 28h
  173. SeeAlso: #M0001,#M0003
  174.  
  175. Bitfields for Pointing Device Flags 2:
  176. Bit(s)    Description    (Table M0003)
  177.  7    device driver far call flag
  178.  6-3    reserved
  179.  2-0    package size (number of bytes received) - 1
  180. SeeAlso: #M0001,#M0002
  181.  
  182. Format of Extended BIOS Data Area (AMI v1.00.12.AX1T):
  183. Offset    Size    Description    (Table M0004)
  184.  00h    BYTE    length of XBDA in kilobytes
  185.  01h 15 BYTEs    reserved
  186.  17h    BYTE    number of entries in POST error log (0-10)
  187.  18h 10 BYTEs    unused???
  188.  22h    DWORD    Pointing Device Driver entry point
  189.  26h    BYTE    Pointing Device Flags 1 (see #M0002)
  190.  27h    BYTE    Pointing Device Flags 2 (see #M0003)
  191.  28h  8 BYTEs    Pointing Device Auxiliary Device Data
  192.  30h 13 BYTEs    ???
  193.  3Dh 16 BYTEs    Fixed Disk parameter table for drive 0
  194.  4Dh 16 BYTEs    Fixed Disk parameter table for drive 1
  195.  5Dh 16 BYTEs    parameter table for drive 2???
  196.  6Dh 16 BYTEs    parameter table for drive 3???
  197.  80h 56 BYTEs?    IDE drive 0 manufacturer/model string
  198.  B8h 41 BYTEs    AMIBIOS copyright string
  199.  E1h        unused???
  200. 102h    WORD    ??? flags
  201.         bit 15: ???
  202. 108h    WORD    offset of IntelIDECfgTbl (IDE configuration settings) within
  203.           segment F000h
  204. 10Ah  2 BYTEs    ???
  205. 10Ch    DWORD    pointer to routine to call for language-specific error messages
  206. 110h    WORD    offset in segment F000h of end of currently-loaded optional
  207.           BIOS subsystems (language, APM, etc.)
  208. 112h    WORD    offset in segment F000h of end of area avaiable for loading
  209.           optional BIOS subsystems
  210. 1F0h    BYTE    APM status flags
  211. 1F1h  8 BYTEs    APM power-state data for device classes 01h-06h
  212.         bits 0-3: current power state for devices 00h-03h in class
  213.         bits 7-4: current engaged state for devices 00h-03h in class
  214. 1F9h  4 BYTEs    APM power-state data for device classes 01h-08h (four devices
  215.           per class)
  216. 1FDh  3 BYTEs    ???
  217. 200h 10 WORDs    POST error log
  218. 214h    ???
  219. SeeAlso: #M0001,#M0005
  220.  
  221. Format of Extended BIOS Data Area (PhoenixBIOS 4.0):
  222. Offset    Size    Description    (Table M0005)
  223.  00h    BYTE    length of XBDA in kilobytes
  224.  01h 33 BYTEs    reserved
  225.  22h    DWORD    Pointing Device Driver entry point
  226.  26h    BYTE    Pointing Device Flags 1 (see #M0002)
  227.  27h    BYTE    Pointing Device Flags 2 (see #M0003)
  228.  28h  8 BYTEs    Pointing Device Auxiliary Device Data
  229. SeeAlso: #M0001,#M0004
  230. --------B-M00400010--------------------------
  231. MEM 0040h:0010h - INSTALLED HARDWARE
  232. Size:    WORD
  233. SeeAlso: INT 11
  234.  
  235. Bitfields for BIOS-detected installed hardware:
  236. Bit(s)    Description    (Table M0006)
  237.  15-14    number of parallel devices
  238.     00 or 11 sometimes used to indicate four LPT ports
  239.  13    (Convertible, PS/2-55LS) internal modem
  240.  12    game port installed
  241.  11-9    number of serial devices
  242.     000 or 111 sometimes used to indicate eight COM ports
  243.  8    reserved
  244.  7-6    number of floppy disk drives (minus 1)
  245.  5-4    initial video mode
  246.     00 EGA,VGA,PGA, or other with on-board video BIOS
  247.     01 40x25 CGA color
  248.     10 80x25 CGA color
  249.     11 80x25 mono text
  250.  3-2    (PC only) RAM on motherboard
  251.     00 = 16K, 01 = 32K, 10 = 48K, 11 = 64K
  252.     (some XTs) RAM on motherboard
  253.     00 = 64K, 01 = 128K, 10 = 192K, 11 = 256K
  254.  2    (pre-PS/2 except PC) reserved
  255.     (PS/2, some XT clones, newer BIOSes) pointing device installed
  256.  1    math coprocessor installed
  257.  0    floppy disk drives are installed
  258.     booted from floppy
  259. --------B-M00400012--------------------------
  260. MEM 0040h:0012h - Convertible - POST STATUS
  261. Size:    BYTE
  262. --------B-M00400012--------------------------
  263. MEM 0040h:0012h U - AT - MANUFACTURING TEST INITIALIZATION FLAGS
  264. Size:    BYTE
  265.  
  266. Bitfields for AT manufacturing test initialization flags:
  267. Bit(s)    Description    (Table M0007)
  268.  0    start in manufacturing test mode rather than normal operation
  269.  1-7    unused
  270. --------b-M00400012--------------------------
  271. MEM 0040h:0012h - MCA - MANUFACTURING TEST
  272. Size:    BYTE
  273.  
  274. Bitfields for MCA manufacturing test flags :
  275. Bit(s)    Description    (Table M0008)
  276.  7    POST flag, ???
  277.  6-5    unused
  278.  4    POST flag, slot 4 has adapter identifier EDAFh
  279.  3    POST flag, 80x25 color video
  280.  2    POST flag, ???
  281.  1    unused
  282.  0    manufacturing test mode rather than normal operation
  283. --------b-M00400012--------------------------
  284. MEM 0040h:0012h - PS/2 Model 25 - POST SYSTEM FLAG
  285. Size:    BYTE
  286.  
  287. Bitfields for PS/2 Model 25 POST sytem flag :
  288. Bit(s)    Description    (Table M0009)
  289.  0    optional memory failed; memory remapped
  290.  1    real-time clock installed
  291. --------B-M00400013--------------------------
  292. MEM 0040h:0013h - BASE MEMORY SIZE IN KBYTES
  293. Size:    WORD
  294. SeeAlso: INT 12
  295. --------b-M00400015--------------------------
  296. MEM 0040h:0015h - PC, XT - ADAPTER MEMORY SIZE IN KBYTES
  297. Size:    WORD
  298. --------b-M00400015--------------------------
  299. MEM 0040h:0015h U - AT - MANUFACTURING TEST SCRATCH PAD
  300. Size:    BYTE
  301. --------K-M00400015--------------------------
  302. MEM 0040h:0015h - Compaq Deskpro 386 - PREVIOUS SCAN CODE
  303. Size:    BYTE
  304. --------b-M00400016--------------------------
  305. MEM 0040h:0016h U - AT - MANUFACTURING TEST SCRATCH PAD
  306. Size:    BYTE
  307. --------b-M00400016--------------------------
  308. MEM 0040h:0016h U - PS/2 Model 30 - BIOS CONTROL FLAGS
  309. Size:    BYTE
  310. --------K-M00400016--------------------------
  311. MEM 0040h:0016h - Compaq Deskpro 386 - KEYCLICK VOLUME
  312. Size:    BYTE
  313. Range:    00h-7Fh
  314. --------K-M00400017--------------------------
  315. MEM 0040h:0017h - KEYBOARD - STATUS FLAGS 1
  316. Size:    BYTE
  317. SeeAlso: MEM 0040h:0018h,INT 16/AH=02h,MEM 0040h:0096h
  318.  
  319. Bitfields for keyboard status flags 1:
  320. Bit(s)    Description    (Table M0010)
  321.  7    INSert active
  322.  6    Caps Lock active
  323.  5    Num Lock active
  324.  4    Scroll Lock active
  325.  3    either Alt pressed
  326.  2    either Ctrl pressed
  327.  1    Left Shift pressed
  328.  0    Right Shift pressed
  329. SeeAlso: #M0011,#00587
  330. --------K-M00400018--------------------------
  331. MEM 0040h:0018h - KEYBOARD - STATUS FLAGS 2
  332. Size:    BYTE
  333. SeeAlso: MEM 0040h:0017h,INT 16/AH=12h
  334.  
  335. Bitfields for keyboard status flags 2 :
  336. Bit(s)    Description    (Table M0011)
  337.  7    INSert pressed
  338.  6    Caps Lock pressed
  339.  5    Num Lock pressed
  340.  4    Scroll Lock pressed
  341.  3    Pause state active
  342.  2    Sys Req pressed
  343.  1    Left Alt pressed
  344.  0    Left Ctrl pressed
  345. SeeAlso: #M0010,#00588
  346. --------K-M00400019--------------------------
  347. MEM 0040h:0019h - KEYBOARD - ALT-nnn KEYPAD WORKSPACE
  348. Size:    BYTE
  349. Desc:    holds the current value of an Alt-NNN keypad sequence; when Alt is
  350.       released and this byte is non-zero, the appropriate character is
  351.       placed in the keyboard buffer
  352. SeeAlso: INT 16/AH=00h,MEM 0040h:001Ah
  353. --------K-M0040001A--------------------------
  354. MEM 0040h:001Ah - KEYBOARD - POINTER TO NEXT CHARACTER IN KEYBOARD BUFFER
  355. Size:    WORD
  356. SeeAlso: MEM 0040h:001Ch,MEM 0040h:0080h,MEM 0040h:0082h,INT 16/AH=00h
  357. --------K-M0040001C--------------------------
  358. MEM 0040h:001Ch - KEYBOARD - POINTER TO FIRST FREE SLOT IN KEYBOARD BUFFER
  359. Size:    WORD
  360. SeeAlso: MEM 0040h:001Ah,MEM 0040h:001Eh,MEM 0040h:0080h,MEM 0040h:0082h
  361. SeeAlso: INT 16/AH=00h
  362. --------K-M0040001E--------------------------
  363. MEM 0040h:001Eh - KEYBOARD - DEFAULT KEYBOARD CIRCULAR BUFFER
  364. Size:    16 WORDs
  365. SeeAlso: MEM 0040h:001Ah,MEM 0040h:001Ch,MEM 0040h:0080h,MEM 0040h:0082h
  366. SeeAlso: INT 16/AH=00h,INT 16/AH=05h
  367. --------B-M0040003E--------------------------
  368. MEM 0040h:003Eh - DISKETTE - RECALIBRATE STATUS
  369. Size:    BYTE
  370. SeeAlso: MEM 0040h:003Fh,MEM 0040h:0040h,INT 13/AH=00h,INT 13/AH=11h
  371.  
  372. Bitfields for diskette recalibrate status:
  373. Bit(s)    Description    (Table M0012)
  374.  7    diskette hardware interrupt occurred
  375.  6-4    reserved
  376.  3    recalibrate diskette 3 (PC,XT only)
  377.  2    recalibrate diskette 2 (PC,XT only)
  378.  1    recalibrate diskette 1
  379.  0    recalibrate diskette 0
  380. --------B-M0040003F--------------------------
  381. MEM 0040h:003Fh - DISKETTE - MOTOR STATUS
  382. Size:    BYTE
  383. SeeAlso: MEM 0040h:003Eh,MEM 0040h:0040h
  384.  
  385. Bitfields for diskette motor status:
  386. Bit(s)    Description    (Table M0013)
  387.  7    current operation is write or format, rather than read or verify
  388.  6    reserved (DMA enabled on 82077)
  389.  5-4    diskette drive number selected (0-3)
  390.  3    diskette 3 motor on (PC,XT only)
  391.  2    diskette 2 motor on (PC,XT only)
  392.  1    diskette 1 motor on
  393.  0    diskette 0 motor on
  394. --------B-M00400040--------------------------
  395. MEM 0040h:0040h - DISKETTE - MOTOR TURN-OFF TIMEOUT COUNT
  396. Size:    BYTE
  397. Desc:    number of clock ticks until diskette motor is turned off
  398. Note:    the typical implementation of the timeout is to have the INT 08 
  399.       handler decrement this byte on every clock tick, and force the
  400.       diskette motor off if the result is equal to zero
  401. SeeAlso: MEM 0040h:003Eh,MEM 0040h:003Fh,MEM 0040h:0041h,INT 08"IRQ0"
  402. --------B-M00400041--------------------------
  403. MEM 0040h:0041h - DISKETTE - LAST OPERATION STATUS
  404. Size:    BYTE
  405. SeeAlso: MEM 0040h:003Eh,MEM 0040h:0042h,INT 13/AH=01h
  406.  
  407. Bitfields for diskette last operation status:
  408. Bit(s)    Description    (Table M0014)
  409.  7    drive not ready
  410.  6    seek error
  411.  5    general controller failure
  412.  4-0    error reason
  413.     00h no error
  414.     01h invalid request/parameter
  415.     02h address mark not found
  416.     03h write-protect error
  417.     04h sector not found
  418.     06h diskette change line active
  419.     08h DMA overrun
  420.     09h DMA across 64k boundary
  421.     0Ch media type unknown
  422.     10h CRC error on read
  423. Note:    the following values for this byte differ somewhat from the
  424.       bitfield definition above:
  425.         30h drive does not support media sense
  426.         31h no media in drive
  427.         32h drive does not support media type
  428.         AAh diskette drive not ready
  429. --------B-M00400042--------------------------
  430. MEM 0040h:0042h - DISK - FLOPPY/HARD DRIVE STATUS/COMMAND BYTES
  431. Size:    7 BYTEs
  432. SeeAlso: MEM 0040h:0041h
  433.  
  434.     42h BYTE    XT: command byte to hard disk controller
  435.         AT: write precompensation cylinder number / 4
  436.     43h    BYTE    XT: bit 5 = drive number, bits 3-0=head number
  437.         AT: sector count
  438.     44h BYTE    XT: bits 6,7 = high bits of track, bits 5-0 = start sector-1
  439.         AT: starting sector
  440.     45h BYTE    low byte of track number
  441.     46h BYTE    XT: sector count
  442.         AT: high bits of track number
  443.     47h BYTE    XT: controlbyte from HD parameters (step rate,...)
  444.         AT: 101DHHHH, D=drive number, HHHH=head number
  445.     48h BYTE    XT: INT 13h subfunction number
  446.         AT: comand byte to hard disk controller
  447. --------B-M00400042--------------------------
  448. MEM 0040h:0042h - DISK CONTROLLER STATUS REGISTER 0
  449. Size:    BYTE
  450. SeeAlso: MEM 0040h:0043h
  451.  
  452. Bitfields for diskette controller status register 0:
  453. Bit(s)    Description    (Table M0015)
  454.  7-6    interrupt code
  455.     00 normal completion
  456.     01 abnormal termination during execution
  457.     10 invalid command
  458.     11 abnormal termination: ready line on/diskette change
  459.  5    requested seek complete
  460.  4    drive fault
  461.  3    drive not ready
  462.  2    head state at time of interrupt
  463.  1-0    selected drive (drives 2&3 on PC,XT only)
  464. SeeAlso: #M0016
  465. --------B-M00400043--------------------------
  466. MEM 0040h:0043h - DISK CONTROLLER STATUS REGISTER 1
  467. Size:    BYTE
  468. SeeAlso: MEM 0040h:0042h,MEM 0040h:0044h
  469.  
  470. Bitfields for diskette controller status register 0:
  471. Bit(s)    Description    (Table M0016)
  472.  7    attempted access beyon last cylinder
  473.  6    unused
  474.  5    CRC error on read
  475.  4    DMA overrun
  476.  3    unused
  477.  2    data error
  478.  1    disk write protected
  479.  0    missing address mark
  480. SeeAlso: #M0015,#M0017
  481. --------B-M00400044--------------------------
  482. MEM 0040h:0044h - DISK CONTROLLER STATUS REGISTER 2
  483. Size:    BYTE
  484. SeeAlso: MEM 0040h:0043h
  485.  
  486. Bitfields for diskette controller status register 0:
  487. Bit(s)    Description    (Table M0017)
  488.  7    unused
  489.  6    found deleted data address mark
  490.  5    CRC error in data field
  491.  4    wrong cylinder number read
  492.  3    verify equal
  493.  2    can't find sector matching verify condition
  494.  1    bad cylinder
  495.  0    unable to find address mark
  496. SeeAlso: #M0016
  497. --------V-M00400049--------------------------
  498. MEM 0040h:0049h - VIDEO - CURRENT VIDEO MODE
  499. Size:    BYTE
  500. SeeAlso: MEM 0040h:004Ah,INT 10/AH=00h
  501. --------V-M0040004A--------------------------
  502. MEM 0040h:004Ah - VIDEO - COLUMNS ON SCREEN
  503. Size:    WORD
  504. SeeAlso: MEM 0040h:0049h,MEM 0040h:004Ch,MEM 0040h:004Eh,INT 10/AH=0Fh
  505. --------V-M0040004C--------------------------
  506. MEM 0040h:004Ch - VIDEO - PAGE (REGEN BUFFER) SIZE IN BYTES
  507. Size:    WORD
  508. SeeAlso: MEM 0040h:004Ah,MEM 0040h:004Eh,MEM 0040h:0050h
  509. --------V-M0040004E--------------------------
  510. MEM 0040h:004Eh - VIDEO - CURRENT PAGE START ADDRESS IN REGEN BUFFER
  511. Size:    WORD
  512. SeeAlso: MEM 0040h:004Ch,MEM 0040h:0050h,MEM 0040h:0062h,INT 10/AH=05h
  513. --------V-M00400050--------------------------
  514. MEM 0040h:0050h - VIDEO - CURSOR POSITIONS
  515. Size:    8 WORDs
  516. Desc:    contains row and column position for the cursors on each of eight
  517.       video pages
  518. SeeAlso: MEM 0040h:004Eh,MEM 0040h:0060h,INT 10/AH=02h
  519. --------V-M00400060--------------------------
  520. MEM 0040h:0060h - VIDEO - CURSOR TYPE
  521. Size:    WORD    (big-endian)
  522. Desc:    contains cursor start scan line and cursor end scan line
  523. SeeAlso: MEM 0040h:0050h,MEM 0040h:0062h,INT 10/AH=03h
  524. --------V-M00400062--------------------------
  525. MEM 0040h:0062h - VIDEO - CURRENT PAGE NUMBER
  526. Size:    BYTE
  527. SeeAlso: MEM 0040h:004Eh,MEM 0040h:0063h,INT 10/AH=05h
  528. --------V-M00400063--------------------------
  529. MEM 0040h:0063h - VIDEO - CRT CONTROLLER BASE I/O PORT ADDRESS
  530. Size:    WORD
  531. Note:    normally 03B4h for mono and 03D4h for color video boards
  532. SeeAlso: MEM 0040h:0065h,MEM 0040h:0066h
  533. --------V-M00400065--------------------------
  534. MEM 0040h:0065h - VIDEO - CURRENT MODE SELECT REGISTER
  535. Size:    BYTE
  536. Desc:    contains last value written to I/O port 03B8h / 03D8h
  537. SeeAlso: MEM 0040h:0063h,MEM 0040h:0066h
  538.  
  539. Bitfields for current video mode select register:
  540. Bit(s)    Description    (Table M0018)
  541.  7-6    unused
  542.  5    attribute bit 7 controls blinking instead of background
  543.  4    mode 6 graphics in monochrome
  544.  3    video signal enabled
  545.  2    monochrome
  546.  1    graphics
  547.  0    80x25 text
  548. --------V-M00400066--------------------------
  549. MEM 0040h:0066h - VIDEO - CURRENT SETTING OF CGA PALETTE REGISTER
  550. Size:    BYTE
  551. Desc:    contains the last value written to I/O port 03D9h
  552. SeeAlso: MEM 0040h:0063h,MEM 0040h:0065h,INT 10h/AH=0Bh/BH=01h
  553.  
  554. Bitfields for CGA palette register:
  555. Bit(s)    Description    (Table M0019)
  556.  7-6    unused
  557.  5    palette (0/1)
  558.  4    intense background colors in text mode
  559.  3    intense border color (40x25) / background color (mode 5)
  560.  2    red
  561.  1    green
  562.  0    blue
  563. ----------M00400067--------------------------
  564. MEM 0040h:0067h - PC only - CASSETTE TIME COUNT
  565. Size:    WORD
  566. SeeAlso: INT 15/AH=00h
  567. ----------M00400067--------------------------
  568. MEM 0040h:0067h - RESET RESTART ADDRESS
  569. Size:    DWORD
  570. Desc:    this address stores the address at which to resume execution after a
  571.       CPU reset (or jump to F000h:FFF0h) when certain magic values are
  572.       stored at 0040h:0072h or in CMOS RAM location 0Fh
  573. SeeAlso: MEM 0040h:0072h,MEM F000h:FFF0h,CMOS 0Fh,INT 19
  574. ----------M00400069--------------------------
  575. MEM 0040h:0069h    - CASSETTE (PC only) - CASSETTE CRC REGISTER
  576. Size:    WORD
  577. SeeAlso: MEM 0040h:006Bh"CASSETTE",INT 15/AH=02h
  578. ----------M00400069--------------------------
  579. MEM 0040h:0069h - V20-XT-BIOS - KEY REPEAT
  580. Size:    BYTE
  581.  
  582. Bitfields for V20-XT-BIOS key repeat flags:
  583. Bit(s)    Description    (Table M0020)
  584.  7    key repeat disabled
  585.  6    Ctrl-Alt pressed instead of just Alt
  586. ----------M0040006B--------------------------
  587. MEM 0040h:006Bh - CASSETTE (PC only) - LAST VALUE READ FROM CASSETTE
  588. Size:    BYTE
  589. SeeAlso: MEM 0040h:0069h"CASSETTE",INT 15/AH=02h
  590. ----------M0040006B--------------------------
  591. MEM 0040h:006Bh - POST LAST UNEXPECTED INTERRUPT (XT and later)
  592. Size:    BYTE
  593. Desc:    this is a bitmask of IRQs which have occurred while the corresponding
  594.       interrupt vector points at the default system BIOS handler
  595.       (bit 0 = IRQ0 to bit 7 = IRQ7; bit 2 = IRQ8-15 on AT and later)
  596. SeeAlso: INT 0F"IRQ7",INT 70"IRQ8",INT 77"IRQ15"
  597. ----------M0040006C--------------------------
  598. MEM 0040h:006Ch - TIMER TICKS SINCE MIDNIGHT
  599. Size:    DWORD
  600. Desc:    updated approximately every 55 milliseconds by the BIOS INT 08 handler
  601. SeeAlso: MEM 0040h:0070h,INT 08"IRQ0",INT 1A/AH=00h
  602. ----------M00400070--------------------------
  603. MEM 0040h:0070h - TIMER OVERFLOW
  604. Size:    BYTE
  605. Desc:    non-zero if timer has counted past midnight since last call to
  606.       INT 1A/AH=00h
  607. Note:    the original IBM BIOS, and thus most other BIOSes, sets this byte to
  608.       01h at midnight; a few (such as the Eagle PC-2) increment it each
  609.       time midnight is passed.  The former behavior results in lost days
  610.       if multiple midnights pass between "get-time" calls while the machine
  611.       is powered up.
  612. SeeAlso: MEM 0040h:006Ch,INT 1A/AH=00h
  613. --------K-M00400071--------------------------
  614. MEM 0040h:0071h - Ctrl-Break FLAG
  615. Size:    BYTE
  616. Desc:    bit 7 is set when Ctrl-Break has been pressed
  617. SeeAlso: INT 1B
  618. ----------M00400072--------------------------
  619. MEM 0040h:0072h - POST RESET FLAG
  620. Size:    WORD
  621. Desc:    specify the action the BIOS should take at the beginning of the
  622.       power-on self-test when the machine is reset
  623. SeeAlso: INT 19,MEM F000h:FFF0h
  624.  
  625. (Table M0021)
  626. Values for POST reset flag:
  627.  0000h    cold boot
  628.  0064h    Burn-in mode
  629.  1234h    to bypass memory test (warm boot)
  630.  4321h    [PS/2 except Mod 25,30] to preserve memory
  631.  5678h    [Conv] system suspended
  632.  9ABCh    [Conv] manufacturing test mode
  633.  ABCDh    [Conv] POST loop mode
  634. --------B-M00400074--------------------------
  635. MEM 0040h:0074h - FIXED DISK LAST OPERATION STATUS (except ESDI drives)
  636. Size:    BYTE
  637. SeeAlso: INT 13/AH=01h,INT 13h/AH=0Ah,MEM 0040h:0041h
  638.  
  639. (Table M0022)
  640. Values for fixed disk last operation status:
  641.  00h    no error
  642.  01h    invalid function request
  643.  02h    address mark not found
  644.  03h    write protect error
  645.  04h    sector not found
  646.  05h    reset failed
  647.  06h    diskette removed
  648.  07h    drive parameter activity failed
  649.  08h    DMA overrun
  650.  09h    DMA data boundary error
  651.  0Ah    bad sector flag detected
  652.  0Bh    bad track detected
  653.  0Ch    requested diskette media type not found
  654.     (PS/2 or extended BIOS only) unsupported track
  655.  0Dh    invalid number of sectors for Format
  656.  0Eh    control data address mark detected
  657.  0Fh    DMA arbitration level out of range
  658.  10h    uncorrectable ECC or CRC error
  659.  11h    ECC corrected data error
  660.  20h    general controller failed
  661.  40h    seek failed
  662.  80h    time out
  663.  AAh    drive not ready
  664.  B0h    volume not locked in drive (INT 13 extensions)
  665.  B1h    volume locked in drive (INT 13 extensions)
  666.  B2h    volume not removable (INT 13 extensions)
  667.  B3h    volume in use (INT 13 extensions)
  668.  B4h    lock count exceeded (INT 13 extensions)
  669.  B5h    valid eject request failed (INT 13 extensions)
  670.  BBh    undefined error
  671.  CCh    write fault on selected drive
  672.  E0h    status error/error register is zero
  673.  FFh    sense failed
  674. SeeAlso: #00234
  675. --------d-M00400074--------------------------
  676. MEM 0040h:0074h - WD1002-27X SuperBIOS - TOTAL DRIVES, FIRST CONTROLLER ONLY
  677. Size:    BYTE
  678. SeeAlso: MEM 0040h:0075h"SuperBIOS",MEM 0040h:0076h"SuperBIOS"
  679. --------B-M00400075--------------------------
  680. MEM 0040h:0075h - FIXED DISK - NUMBER OF FIXED DISK DRIVES
  681. Size:    BYTE
  682. SeeAlso: MEM 0040h:0076h"FIXED DISK",MEM 0040h:0077h"FIXED DISK"
  683. --------d-M00400075--------------------------
  684. MEM 0040h:0075h - WD1002-27X SuperBIOS - TOTAL FIXED DRIVES, BOTH CONTROLLERS
  685. Size:    BYTE
  686. SeeAlso: MEM 0040h:0074h"SuperBIOS",MEM 0040h:0076h"SuperBIOS"
  687. --------B-M00400076--------------------------
  688. MEM 0040h:0076h - FIXED DISK - CONTROL BYTE    {IBM documented only for XT}
  689. Size:    BYTE
  690. Desc:    loaded from the disk parameter table control byte (offset 8) during
  691.       various hard disk operations
  692. SeeAlso: MEM 0040h:0075h"FIXED DISK",MEM 0040h:0077h"FIXED DISK"
  693. --------d-M00400076--------------------------
  694. MEM 0040h:0076h - XT: hard disk controller's I/O address (Western Digital)
  695. Size:    BYTE
  696. --------d-M00400076--------------------------
  697. MEM 0040h:0076h - WD1002-27X SuperBIOS - USED IN TRACK RECALCULATION
  698. Size:    BYTE
  699. SeeAlso: MEM 0040h:0074h"SuperBIOS",MEM 0040h:0075h"SuperBIOS"
  700. SeeAlso: MEM 0040h:0077h"SuperBIOS"
  701. --------B-M00400077--------------------------
  702. MEM 0040h:0077h    - FIXED DISK - I/O port offset {IBM documented only for XT}
  703. Size:    BYTE
  704. SeeAlso: MEM 0040h:0075h"FIXED DISK",MEM 0040h:0076h"FIXED DISK"
  705. --------d-M00400077--------------------------
  706. MEM 0040h:0077h - WD1002-27X SuperBIOS - USED IN TRACK RECALCULATION
  707. Size:    BYTE
  708. SeeAlso: MEM 0040h:0076h"SuperBIOS"
  709. --------B-M00400078--------------------------
  710. MEM 0040h:0078h - PARALLEL DEVICE 1 TIME-OUT COUNTER
  711. Size:    BYTE
  712. SeeAlso: MEM 0040h:0079h,MEM 0040h:007Ah,INT 17/AH=00h
  713. --------B-M00400079--------------------------
  714. MEM 0040h:0079h - PARALLEL DEVICE 2 TIME-OUT COUNTER
  715. Size:    BYTE
  716. SeeAlso: MEM 0040h:0078h,MEM 0040h:007Ah,INT 17/AH=00h
  717. --------B-M0040007A--------------------------
  718. MEM 0040h:007Ah - PARALLEL DEVICE 3 TIME-OUT COUNTER
  719. Size:    BYTE
  720. SeeAlso: MEM 0040h:0078h,MEM 0040h:0079h,MEM 0040h:007Bh"PARALLEL"
  721. --------B-M0040007B--------------------------
  722. MEM 0040h:007Bh - PARALLEL DEVICE 4 TIME-OUT COUNTER (pre-PS, PS Models 25,30)
  723. Size:    BYTE
  724. SeeAlso: MEM 0040h:0078h,MEM 0040h:007Ah,MEM 0040h:007Bh"INT 4Bh"
  725. --------m-M0040007B--------------------------
  726. MEM 0040h:007Bh - INT 4Bh FLAGS (PS2 and newer)
  727. Size:    BYTE
  728. SeeAlso: INT 4B/AX=8102h
  729.  
  730. Bitfields for INT 4Bh flags:
  731. Bit(s)    Description    (Table M0023)
  732.  7-6    reserved
  733.  5    set if Virtual DMA Spec supported [PS] (see INT 4B)
  734.  4    reserved
  735.  3    set if INT 4Bh intercepted and must be chained
  736.  2    reserved
  737.  1    set if Generic SCSI CBIOS services available on INT 4Bh
  738.  0    reserved
  739. --------B-M0040007C--------------------------
  740. MEM 0040h:007Ch - SERIAL DEVICE 1 TIMEOUT COUNTER
  741. Size:    BYTE
  742. SeeAlso: MEM 0040h:0000h,MEM 0040h:007Dh,MEM 0040h:007Eh,MEM 0040h:007Fh
  743. SeeAlso: INT 14/AH=01h
  744. --------B-M0040007D--------------------------
  745. MEM 0040h:007Dh - SERIAL DEVICE 2 TIMEOUT COUNTER
  746. Size:    BYTE
  747. SeeAlso: MEM 0040h:0002h,MEM 0040h:007Ch,MEM 0040h:007Eh,MEM 0040h:007Fh
  748. SeeAlso: INT 14/AH=01h
  749. --------B-M0040007E--------------------------
  750. MEM 0040h:007Eh - SERIAL DEVICE 3 TIMEOUT COUNTER
  751. Size:    BYTE
  752. SeeAlso: MEM 0040h:0004h,MEM 0040h:007Ch,MEM 0040h:007Dh,MEM 0040h:007Fh
  753. SeeAlso: INT 14/AH=01h
  754. --------B-M0040007F--------------------------
  755. MEM 0040h:007Fh - SERIAL DEVICE 4 TIMEOUT COUNTER
  756. Size:    BYTE
  757. SeeAlso: MEM 0040h:0006h,MEM 0040h:007Ch,MEM 0040h:007Dh,MEM 0040h:007Eh
  758. SeeAlso: INT 14/AH=01h
  759. --------K-M00400080--------------------------
  760. MEM 0040h:0080h - KEYBOARD BUFFER START OFFSET FROM SEGMENT 40h (normally 1Eh)
  761. Size:    WORD
  762. SeeAlso: MEM 0040h:001Ah,MEM 0040h:001Eh,MEM 0040h:0082h,INT 16/AH=05h
  763. --------K-M00400082--------------------------
  764. MEM 0040h:0082h - KEYBOARD BUFFER END+1 OFFSET FROM SEGMENT 40h (normally 3Eh)
  765. Size:    WORD
  766. Note:    XT BIOS dated 11/08/82 ends here
  767. SeeAlso: MEM 0040h:001Ch,MEM 0040h:003Eh,MEM 0040h:0080h,INT 16/AH=05h
  768. --------V-M00400084--------------------------
  769. MEM 0040h:0084h - VIDEO (EGA/MCGA/VGA) - ROWS ON SCREEN MINUS ONE
  770. Size:    BYTE
  771. SeeAlso: MEM 0040h:0085h,INT 10/AX=1100h
  772. --------V-M00400085--------------------------
  773. MEM 0040h:0085h - VIDEO (EGA/MCGA/VGA) - CHARACTER HEIGHT IN SCAN-LINES
  774. Size:    WORD
  775. SeeAlso: MEM 0040h:0084h
  776. --------V-M00400087--------------------------
  777. MEM 0040h:0087h - VIDEO (EGA/VGA) CONTROL: [MCGA: =00h]
  778. Size:    BYTE
  779. SeeAlso: MEM 0040h:0084h,MEM 0040h:0085h,MEM 0040h:0088h
  780.  
  781. Bitfields for EGA/VGA Video control flags:
  782. Bit(s)    Description    (Table M0024)
  783.  7    do not to clear RAM on mode set (see INT 10h, AH=00h)
  784.  6-5    RAM on adapter = (this field + 1) * 64K
  785.  4    reserved
  786.  3    EGA/VGA video system INactive
  787.  2    wait for display enable
  788.  1    mono monitor
  789.  0    alphanumeric cursor emulation DISabled
  790.     When enabled, text mode cursor size (INT 10,AH=01h) settings looking
  791.      like CGA ones are translated to equivalent EGA/VGA ones.
  792. --------V-M00400088--------------------------
  793. MEM 0040h:0088h - VIDEO (EGA/VGA) SWITCHES: [MCGA: reserved]
  794. Size:    BYTE
  795. SeeAlso: MEM 0040h:0087h,MEM 0040h:0089h
  796.  
  797. Bitfields for EGA/VGA Video switches:
  798. Bit(s)    Description    (Table M0025)
  799.  7-4    power-on state of feature connector bits 3-0
  800.  3-0    configuration switches 4-1 (=0 on, =1 off) (see #M0026)
  801. Note:    when bit 4 of 0040h:0089h is 0, VGA emulates 350-line EGA if this
  802.       byte is x3h or x9h, otherwise emulates 200-line CGA in 400-line
  803.       double scan. VGA resets this byte to x9h after the mode set.
  804.     See also note for 0040h:0089h.
  805.  
  806. (Table M0026)
  807. Values for EGA/VGA configuration switches:
  808.  00h Pri MDA,                Sec EGA+old color display 40 x 25
  809.  01h Pri MDA,                Sec EGA+old color display 80 x 25
  810.  02h Pri MDA,                Sec EGA+ECD normal mode (CGA emul)
  811.  03h Pri MDA,                Sec EGA+ECD enhanced mode
  812.  04h Pri CGA 40 x 25,            Sec EGA mono display
  813.  05h Pri CGA 80 x 25,            Sec EGA mono display
  814.  06h Pri EGA+old color display 40 x 25, Sec MDA
  815.  07h Pri EGA+old color display 80 x 25, Sec MDA
  816.  08h Pri EGA+ECD normal mode (CGA emul), Sec MDA
  817.  09h Pri EGA+ECD enhanced mode,        Sec MDA
  818.  0Ah Pri EGA mono display,        Sec CGA 40 x 25
  819.  0Bh Pri EGA mono display,        Sec CGA 80 x 25
  820. SeeAlso: #M0025
  821. --------V-M00400089--------------------------
  822. MEM 0040h:0089h U - VIDEO (MCGA/VGA) - MODE-SET OPTION CONTROL
  823. Size:    BYTE
  824. SeeAlso: MEM 0040h:0087h,MEM 0040h:0088h
  825.  
  826. Bitfields for Video mode-set option control:
  827. Bit(s)    Description    (Table M0027)
  828.  7,4    requested scan lines
  829.     0 0  350-line mode requested
  830.     0 1  400-line mode at next mode set
  831.     1 0  200-line mode requested
  832.     1 1  reserved
  833.     Note:    Apparently VGA BIOS mode set disregards bit 7 and uses
  834.           byte 40h:88h to determine 200/350 selection when bit 4
  835.           is zero. Presumably bit 7 is a convenience for other
  836.           purposes. Bit 7 is reset to zero after the mode set.
  837.  6    display switching enabled
  838.  5    reserved
  839.  4    if set:      use 400-line mode at next mode set
  840.     if clear: [VGA] emulate EGA at next mode set
  841.         [MCGA] emulate CGA, digital monitor, 200 lines, 8x8 text
  842.     Note: this bit is set by the video mode set on VGA, unchanged on MCGA
  843.  3    default palette loading DISabled at mode set
  844.  2    mono display
  845.  1    gray scale summing enabled
  846.  0    [VGA] =1 if VGA active, =0 if not
  847.     [MCGA] reserved, zero
  848. Note:    the Tseng ET4000 BIOS v3.00 uses bits 6-4 of 88h and bits 6-5 of 89h
  849.       to specify graphics-mode refresh rates as follows
  850.         88h/6        640x480:  1 for 72Hz,0 for 60Hz
  851.         88h/5+89h/6    800x600:  00  60Hz
  852.                       01  56Hz
  853.                       11  72Hz
  854.         88h/4+89h/5    1024x768: 00  interlaced
  855.                       01  60Hz
  856.                       10  72Hz???
  857.                       11  70Hz
  858. --------V-M0040008A--------------------------
  859. MEM 0040h:008Ah U - VIDEO (MCGA/VGA) - INDEX INTO DISPLAY COMBINATION CODE TBL
  860. Size:    BYTE
  861. SeeAlso: INT 10/AX=1A00h,#M0039
  862. --------*-M0040008B--------------------------
  863. MEM 0040h:008Bh - PC, PCjr, PC/XT 11/8/82, Convertible - RESERVED
  864. Size:    11 BYTEs
  865. --------B-M0040008B--------------------------
  866. MEM 0040h:008Bh - DISKETTE MEDIA CONTROL
  867. Size:    BYTE
  868.  
  869. Bitfields for diskette media control:
  870. Bit(s)    Description    (Table M0028)
  871.  7-6    last data rate set by controller
  872.     00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
  873.  5-4    last diskette drive step rate selected
  874.     00=0Ch, 01=0Dh, 10=0Eh, 11=0Ah
  875.  3-2    {data rate at start of operation}
  876.  1-0    reserved
  877. Note:    EHD BIOS sets this byte to 01h and never reads it back
  878. --------B-M0040008C--------------------------
  879. MEM 0040h:008Ch - FIXED DISK - CONTROLLER STATUS [not XT]
  880. Size:    BYTE
  881. SeeAlso: MEM 0040h:008Dh,MEM 0040h:008Eh
  882. --------B-M0040008D--------------------------
  883. MEM 0040h:008Dh - FIXED DISK - CONTROLLER ERROR STATUS [not XT]
  884. Size:    BYTE
  885. SeeAlso: MEM 0040h:008Ch,MEM 0040h:008Eh
  886. --------B-M0040008E--------------------------
  887. MEM 0040h:008Eh - FIXED DISK - INTERRUPT CONTROL [not XT]
  888. Size:    BYTE
  889. Note:    cleared to 00h at start of disk operation, set to FFh by IRQ14
  890.       handler when hard disk controller completes command
  891. SeeAlso: MEM 0040h:008Ch,MEM 0040h:008Dh,MEM 0040h:008Fh
  892. --------B-M0040008F--------------------------
  893. MEM 0040h:008Fh U - DISKETTE CONTROLLER INFORMATION [not XT]
  894. Size:    BYTE
  895. SeeAlso: MEM 0040h:008Ch,MEM 0040h:008Dh,MEM 0040h:008Eh
  896.  
  897. Bitfields for diskette controller information:
  898. Bit(s)    Description    (Table M0029)
  899.  7    reserved
  900.  6    =1 drive 1 determined
  901.  5    =1 drive 1 is multi-rate, valid if drive determined
  902.  4    =1 drive 1 supports 80 tracks, always valid
  903.  3    reserved
  904.  2    =1 drive 0 determined
  905.  1    =1 drive 0 is multi-rate, valid if drive determined
  906.  0    =1 drive 0 supports 80 tracks, always valid
  907. Note:    EHD BIOS sets this byte to 01h and never alters it again
  908. --------B-M00400090--------------------------
  909. MEM 0040h:0090h - DISKETTE DRIVE 0 MEDIA STATE
  910. Size:    BYTE
  911. SeeAlso: MEM 0040h:0091h
  912.  
  913. Bitfields for diskette drive media state:
  914. Bit(s)    Description    (Table M0030)
  915.  7-6    data rate
  916.     00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
  917.  5    double stepping required (e.g. 360kB in 1.2MB)
  918.  4    media type established
  919.  3    drive capable of supporting 4MB media
  920.  2-0    on exit from BIOS, contains
  921.     000 trying 360kB in 360kB
  922.     001 trying 360kB in 1.2MB
  923.     010 trying 1.2MB in 1.2MB
  924.     011 360kB in 360kB established
  925.     100 360kB in 1.2MB established
  926.     101 1.2MB in 1.2MB established
  927.     110 reserved
  928.     111 all other formats/drives
  929. SeeAlso: #M0031,#M0032
  930. --------B-M00400091--------------------------
  931. MEM 0040h:0091h - DISKETTE DRIVE 1 MEDIA STATE
  932. Size:    BYTE
  933. SeeAlso: MEM 0040h:0090h,#M0030
  934. --------B-M00400092--------------------------
  935. MEM 0040h:0092h U - DISKETTE DRIVE 0 MEDIA STATE AT START OF OPERATION
  936. Size:    BYTE
  937. Note:    officially "Drive 2 media state"
  938. SeeAlso: MEM 0040h:0093h"DRIVE 1"
  939.  
  940. Bitfields for diskette drive 0 media state at start of operation:
  941. Bit(s)    Description    (Table M0031)
  942.  7-3 (see #M0030)
  943.  2    multiple data rate capability determined
  944.  1    multiple data rate capability
  945.  0    =1 if drive has 80 tracks, =0 if 40 tracks
  946. SeeAlso: #M0030,#M0032
  947. --------d-M00400092--------------------------
  948. MEM 0040h:0092h - Olivetti Quaderno - HARD DISK POWERDOWN COUNTDOWN CLOCK TICKS
  949. Size:    BYTE
  950. Note:    hard disk is turned off when counter reaches zero
  951. --------B-M00400093--------------------------
  952. MEM 0040h:0093h U - DISKETTE DRIVE 1 MEDIA STATE AT START OF OPERATION
  953. Size:    BYTE
  954. Note:    officially "Drive 3 media state"
  955. SeeAlso: MEM 0040h:0092h"DRIVE 0"
  956.  
  957. Bitfields for diskette drive 1 media state at start of operation:
  958. Bit(s)    Description    (Table M0032)
  959.  7-3    (see #M0030)
  960.  2    multiple data rate capability determined
  961.  1    multiple data rate capability
  962.  0    =1 if drive has 80 tracks, =0 if 40 tracks
  963. --HP 100LX/200LX--
  964.     display control status
  965.  0    =1 if DISPCTL -K
  966.  1    =1 if DISPCTL -C
  967. --------B-M00400094--------------------------
  968. MEM 0040h:0094h - DISKETTE DRIVE 0 CURRENT TRACK NUMBER
  969. Size:    BYTE
  970. SeeAlso: MEM 0040h:0095h
  971. --------B-M00400095--------------------------
  972. MEM 0040h:0095h - DISKETTE DRIVE 1 CURRENT TRACK NUMBER
  973. Size:    BYTE
  974. SeeAlso: MEM 0040h:0094h
  975. --------K-M00400096--------------------------
  976. MEM 0040h:0096h - KEYBOARD STATUS BYTE 1
  977. Size:    BYTE
  978. SeeAlso: MEM 0040h:0097h,INT 16/AH=11h
  979.  
  980. Bitfields for keyboard status byte 1:
  981. Bit(s)    Description    (Table M0033)
  982.  7    =1 read-ID in progress
  983.  6    =1 last code read was first of two ID codes
  984.  5    =1 force Num Lock if read-ID and enhanced keyboard
  985.  4    =1 enhanced keyboard installed
  986.  3    =1 Right Alt pressed
  987.  2    =1 Right Ctrl pressed
  988.  1    =1 last code read was E0h
  989.  0    =1 last code read was E1h
  990. SeeAlso: #M0034,#M0010
  991. --------K-M00400097--------------------------
  992. MEM 0040h:0097h - KEYBOARD STATUS BYTE 2
  993. Size:    BYTE
  994. SeeAlso: MEM 0040h:0096h,INT 16/AH=11h
  995.  
  996. Bitfields for keyboard status byte 2:
  997. Bit(s)    Description    (Table M0034)
  998.  7    =1 keyboard transmit error flag
  999.  6    =1 LED update in progress
  1000.  5    =1 RESEND received from keyboard
  1001.  4    =1 ACK received from keyboard
  1002.  3    reserved, must be zero
  1003.  2    Caps Lock LED
  1004.  1    Num Lock LED
  1005.  0    Scroll Lock LED
  1006. SeeAlso: #M0033,#M0010
  1007. --------B-M00400098--------------------------
  1008. MEM 0040h:0098h - TIMER2 (AT, PS exc Mod 30) - PTR TO USER WAIT-COMPLETE FLAG
  1009. Size:    DWORD
  1010. Note:    (see INT 15/AX=8300h)
  1011. SeeAlso: MEM 0040h:009Ch,INT 15/AH=83h,INT 15/AH=86h
  1012. --------B-M0040009C--------------------------
  1013. MEM 0040h:009Ch - TIMER2 (AT, PS exc Mod 30) - USER WAIT COUNT IN MICROSECONDS
  1014. Size:    DWORD
  1015. SeeAlso: MEM 0040h:0098h,MEM 0040h:00A0h,INT 15/AH=83h,INT 15/AH=86h
  1016. --------V-M0040009F--------------------------
  1017. MEM 0040h:009Fh - HP 100LX/200LX - VIDEO ZOOM MODE
  1018. Size:    BYTE
  1019.  
  1020. (Table M0035)
  1021. Values for HP 100LX/200LX video zoom mode:
  1022.  02h    80x25 mono
  1023.  03h    80x25 color
  1024.  80h    64x18 mono
  1025.  81h    64x18 color
  1026.  82h    40x25 mono
  1027.  83h    40x25 color
  1028.  84h    40x16 mono
  1029.  85h    40x16 color
  1030. SeeAlso: INT 10/AH=D0h
  1031. --------B-M004000A0--------------------------
  1032. MEM 0040h:00A0h - TIMER2 (AT, PS exc Mod 30) - WAIT ACTIVE FLAG
  1033. Size:    BYTE
  1034. SeeAlso: MEM 0040h:009Ch,INT 15/AH=83h,INT 15/AH=86h
  1035.  
  1036. Bitfields for Timer2 wait active flag:
  1037. Bit(s)    Description    (Table M0036)
  1038.  7    wait time elapsed
  1039.  6-1    reserved
  1040.  0    INT 15/AH=86h has occurred
  1041. --------N-M004000A1--------------------------
  1042. MEM 0040h:00A1h - BIT 5 SET IF LAN SUPPORT PROGRAM INTERRUPT ARBITRATOR PRESENT
  1043. Size:    BYTE
  1044. Note:    DEVICE=DXMA0MOD.SYS
  1045. --------N-M004000A2--------------------------
  1046. MEM 0040h:00A2h - RESERVED FOR NETWORK ADAPTERS
  1047. Size:    6 BYTEs
  1048. --------d-M004000A4--------------------------
  1049. MEM 0040h:00A4h - PS/2 Mod 30 - SAVED FIXED DISK INTERRUPT VECTOR 
  1050. Size:    DWORD
  1051. --------V-M004000A8--------------------------
  1052. MEM 0040h:00A8h - VIDEO (EGA/MCGA/VGA) - POINTER TO VIDEO SAVE POINTER TABLE
  1053. Size:    DWORD
  1054. SeeAlso: INT 10/AH=1Ch
  1055.  
  1056. Format of Video Save Pointer Table [EGA/VGA/MCGA only]:
  1057. Offset    Size    Description    (Table M0037)
  1058.  00h    DWORD    ptr to Video Parameter Table
  1059.  04h    DWORD    ptr to Parameter Dynamic Save Area, else 0 [EGA/VGA only]
  1060.  08h    DWORD    ptr to Alphanumeric Character Set Override, else 0
  1061.  0Ch    DWORD    ptr to Graphics Character Set Override, else 0
  1062.  10h    DWORD    [VGA only] ptr to Secondary Save Pointer Table, must be valid
  1063.  14h    DWORD    reserved, zero
  1064.  18h    DWORD    reserved, zero
  1065. Note: table initially in ROM, copy to RAM to alter, then update 40h:A8h.
  1066.  
  1067. Format of Secondary Video Save Pointer Table [VGA only]:
  1068. Offset    Size    Description    (Table M0038)
  1069.  00h    WORD    Length of this table in bytes, including this word (1Ah)
  1070.  02h    DWORD    ptr to Display Combination Code Table, must be valid
  1071.  06h    DWORD    ptr to second Alphanumeric Character Set Override, else 0
  1072.  0Ah    DWORD    ptr to User Palette Profile Table, else 0
  1073.  0Eh    DWORD    reserved, zero
  1074.  12h    DWORD    reserved, zero
  1075.  16h    DWORD    reserved, zero
  1076. Note: table initially in ROM, copy to RAM to alter, then alter Save Ptr Table.
  1077.  
  1078. Format of Display Combination Code Table [VGA only]:
  1079. Offset    Size    Description    (Table M0039)
  1080.  00h    BYTE    Number of entries in the DCC table at offset 04h
  1081.  01h    BYTE    Version number
  1082.  02h    BYTE    Maximum display type code that can appear in DCC table
  1083.  03h    BYTE    reserved
  1084.  04h 2N BYTEs    Each pair of bytes gives a valid display combination, one
  1085.           display type per byte (see #M0040)
  1086.  
  1087. (Table M0040)
  1088. Values for Display Combination display type:
  1089.  00h     no display
  1090.  01h     MDA with mono display
  1091.  02h     CGA with color display
  1092.  03h     reserved
  1093.  04h     EGA with color display
  1094.  05h     EGA with mono display
  1095.  06h     Professional Graphics Controller
  1096.  07h     VGA with mono display
  1097.  08h     VGA with color display
  1098.  09h     reserved
  1099.  0Ah     MCGA with digital color display
  1100.  0Bh     MCGA with analog mono display
  1101.  0Ch     MCGA with analog color display
  1102.  FFh     unrecognised video system
  1103. SeeAlso: #M0039
  1104.  
  1105. Format of Video Parameter Table [EGA, VGA only]:
  1106. Offset    Size    Description    (Table M0041)
  1107.  00h-03h    Modes 00h-03h in 200-line CGA emulation mode
  1108.  04h-0Eh    Modes 04h-0Eh
  1109.  0Fh-10h    Modes 0Fh-10h when only 64kB RAM on adapter
  1110.  11h-12h    Modes 0Fh-10h when >64kB RAM on adapter
  1111.  13h-16h    Modes 00h-03h in 350-line mode
  1112.  17h        VGA Modes 00h or 01h in 400-line mode
  1113.  18h        VGA Modes 02h or 03h in 400-line mode
  1114.  19h        VGA Mode  07h in 400-line mode
  1115.  1Ah-1Ch    VGA Modes 11h-13h
  1116. Note:    An array of 23 [EGA] or 29 [VGA] elements, each element being 64
  1117.       bytes long.  Elements appear in the above order.
  1118.  
  1119. Format of Video Parameter Table element [EGA, VGA only]:
  1120. Offset    Size    Description    (Table M0042)
  1121.  00h    BYTE    Columns on screen          (see 40h:4Ah)
  1122.  01h    BYTE    Rows on screen minus one      (see 40h:84h)
  1123.  02h    BYTE    Height of character in scan lines (see 40h:85h)
  1124.  03h    WORD    Size of video buffer          (see 40h:4Ch)
  1125.  05h  4 BYTEs    Values for Sequencer Registers 1-4
  1126.  09h    BYTE    Value for Miscellaneous Output Register
  1127.  0Ah 25 BYTEs    Values for CRTC Registers 00h-18h
  1128.  23h 20 BYTEs    Values for Attribute Controller Registers 00h-13h
  1129.  37h  9 BYTEs    Values for Graphics Controller Registers 00h-08h
  1130.  
  1131. Format of Video Parameter Table [MCGA only] {guesswork from inspection}:
  1132. Offset    Size    Description    (Table M0043)
  1133.     - 16 triplet BYTEs of R,G,B DAC info for 16 colors;
  1134.     - An array of 11 elements, each element being 32 bytes long.
  1135.       Elements appear in the order:
  1136.         Modes 00h,01h in 200-line mode for digital displays
  1137.         Modes 00h,01h in 400-line mode for analog displays
  1138.         Modes 02h,03h in 200-line mode for digital displays
  1139.         Modes 02h,03h in 400-line mode for analog displays
  1140.         Modes 04h,05h in 200-line mode for digital displays
  1141.         Modes 04h,05h in 400-line mode for analog displays
  1142.         Mode  06h in 200-line mode for digital displays
  1143.         Mode  06h in 400-line mode for analog displays
  1144.         Mode  11h
  1145.         Mode  13h in 200-line mode for digital displays
  1146.         Mode  13h in 400-line mode for analog displays
  1147.  
  1148. Format of Video Parameter Table element [MCGA only]:
  1149. Offset    Size    Description    (Table M0044)
  1150.  00h    BYTE    Columns on screen          (see 40h:4Ah)
  1151.  01h    BYTE    Rows on screen minus one      (see 40h:84h)
  1152.  02h    BYTE    Height of character in scan lines (see 40h:85h)
  1153.  03h    WORD    Size of video buffer          (see 40h:4Ch)
  1154.  05h    WORD    ??? always zero
  1155.  07h 21 BYTEs    Video data registers 00h-14h to port 3D5h indexed by 3D4h
  1156.  1Ch    BYTE    PEL Mask to port 3C6h
  1157.  1Dh    BYTE    CGA Mode Control to port 3D8h
  1158.  1Eh    BYTE    CGA Border Control to port 3D9h
  1159.  1Fh    BYTE    Extended Mode Control to port 3DDh
  1160.  
  1161. Format of Video Parameter Dynamic Save Area [EGA, VGA only]:
  1162. Offset    Size    Description    (Table M0045)
  1163.  00h 16 BYTEs    Last data written to Attribute Contr. Palette Registers 0-15
  1164.  10h    BYTE    Last data written to Attribute Controller Overscan Register
  1165.  11h-FFh    Reserved
  1166.         Note: Need for table was that EGA registers were write-only.
  1167.         Note: If default values (from the Video Parameter Table) are
  1168.               over-ridden at a mode set by the VGA User Palette Profile
  1169.               Table, then the Dynamic Save Area is updated with the
  1170.               default values, not the User Profile ones.
  1171.  
  1172. Format of Alphanumeric Character Set Override:
  1173. Offset    Size    Description    (Table M0046)
  1174.  00h    BYTE    Length in bytes of each character in font table
  1175.  01h    BYTE    Character generator RAM bank to load, 0=normal
  1176.  02h    WORD    Number of characters in font table, normally 256
  1177.  04h    WORD    Code of first character in font table, normally 0
  1178.  06h    DWORD    ptr to font table
  1179.  0Ah    BYTE    Displayable rows (FFh=use maximum calculated value)
  1180.  0Bh    BYTEs    Array of mode values to which this font is to pertain
  1181.     BYTE    FFh end of array
  1182.  
  1183. Format of Second Alphanumeric Character Set Override:
  1184. Offset    Size    Description    (Table M0047)
  1185.  00h    BYTE    Length in bytes of each character in font table
  1186.  01h    BYTE    Character generator RAM bank to load, normally non-zero
  1187.  02h    BYTE    reserved
  1188.  03h    DWORD    ptr to font table
  1189.  07h    BYTEs    Array of mode values to which this font is to pertain
  1190.     BYTE    FFh end of array
  1191. Note:    Authorities differ, some say same as first override above, but IBM
  1192.       says it is as shown above
  1193.  
  1194. Format of Graphics Character Set Override:
  1195. Offset    Size    Description    (Table M0048)
  1196.  00h    BYTE    Number of displayable character rows
  1197.  01h    WORD    Length in bytes of each character in font table
  1198.  03h    DWORD    ptr to font table
  1199.  07h    BYTEs    Array of mode values to which this font is to pertain
  1200.     BYTE    FFh end of array
  1201.  
  1202. Format of User Palette Profile Table [VGA only]:
  1203. Offset    Size    Description    (Table M0049)
  1204.  00h    BYTE    Underlining: 01h=enable in all alphanumeric modes
  1205.                  00h=enable in monochrome alphanumeric modes only
  1206.                  FFh=disable in all alphanumeric modes
  1207.  01h    BYTE    reserved
  1208.  02h    WORD    reserved
  1209.  04h    WORD    Number (0-17) of Attribute Controller registers in table
  1210.  06h    WORD    Index (0-16) of first Attribute Controller register in table
  1211.  08h    DWORD    ptr to table of Attribute Controller registers to override
  1212.             Table is an array of BYTEs.
  1213.  0Ch    WORD    Number (0-256) of video DAC Color registers in table
  1214.  0Eh    WORD    Index (0-255) of first video DAC Color register in table
  1215.  10h    DWORD    ptr to table of video DAC Color registers to override
  1216.             Table is ??? triplets ??? of BYTEs???
  1217.  14h    BYTEs    array of mode values to which this profile is to pertain
  1218.     BYTE    FFh end of array
  1219. --------*-M004000AC--------------------------
  1220. MEM 0040h:00ACh - RESERVED
  1221. Size:    4 BYTEs
  1222. --------b-M004000B0--------------------------
  1223. MEM 0040h:00B0h - Phoenix 386 BIOS 1.10 10a - LOOP COUNT FOR HARD DISK TIMEOUT
  1224. Size:    BYTE
  1225. Desc:    number of times a tight software delay loop should be executed to
  1226.       generate the sub-55ms delays used internally by the BIOS
  1227. Note:    also used for delaying when beeping due to full keyboard buffer
  1228. SeeAlso: MEM 0040h:00ECh"Dell",INT 15/AH=BCh
  1229. --------d-M004000B0--------------------------
  1230. MEM 0040h:00B0h - PTR TO 3363 OPTICAL DISK DRIVER OR BIOS ENTRY POINT
  1231. Size:    DWORD
  1232. Notes:    When 3363 BIOS present, the ASCIZ signature "OPTIC "occurs 3 bytes
  1233.       beyond this entry point
  1234.     When 3363 BIOS and 3363 File System Driver present, the ASCIZ signature
  1235.       "FILE SYSTEM DRIVER" occurs 3 bytes beyond this entry point
  1236. --------b-M004000B0--------------------------
  1237. MEM 0040h:00B0h    - 1988 Phoenix 386 BIOS 1.10 03 - PARAMS FOR TYPE 48 HARD DISK
  1238. Size:    16 BYTEs
  1239. SeeAlso: INT 41,INT 46,MEM 0040h:00C0h"HARD DISK"
  1240. --------*-M004000B4--------------------------
  1241. MEM 0040h:00B4h    - RESERVED
  1242. Size:    WORD
  1243. --------b-M004000B5--------------------------
  1244. MEM 0040h:00B5h    - Dell 4xxDE
  1245. Size:    BYTE
  1246.  
  1247. Bitfields for Dell 4xxDE flags:
  1248. Bit(s)    Description    (Table M0050)
  1249.  2    ??? (related to disk drives)
  1250.  5    page tables set to allow Weitek addressing in real mode
  1251.  6    Weitek math coprocessor present
  1252. ----------M004000B6--------------------------
  1253. MEM 0040h:00B6h    - RESERVED FOR POST???
  1254. Size:    3 BYTEs
  1255. ----------M004000B9--------------------------
  1256. MEM 0040h:00B9h - ???
  1257. Size:    7 BYTEs
  1258. --------b-M004000BC--------------------------
  1259. MEM 0040h:00BCh - 1993 Phoenix 486 BIOS 1.03 PCI - CPU TYPE/MASK REVISION
  1260. Size:    WORD
  1261. Desc:    the high byte contains the CPU type, the low byte the mask revision
  1262.       (stepping level), as reported to the BIOS in DX by the CPU at startup
  1263. SeeAlso: INT 15/AH=C9h
  1264. --------b-M004000C0--------------------------
  1265. MEM 0040h:00C0h    - 1988 Phoenix 386 BIOS 1.10 03 - PARAMS FOR TYPE 49 HARD DISK
  1266. Size:    16 BYTEs
  1267. SeeAlso: INT 41,INT 46,MEM 0040h:00B0h"HARD DISK"
  1268. --------*-M004000C0--------------------------
  1269. MEM 0040h:00C0h    - RESERVED
  1270. Size:    14 BYTEs
  1271. --------K-M004000C2--------------------------
  1272. MEM 0040h:00C2h - AMI BIOS 1.00.12.AX1T - KEYBOARD TYPE
  1273. Size:    WORD
  1274. Desc:    this word contains an indication of the type of keyboard
  1275.       (controller???) attached to the system
  1276. Note:    AMI's APM code checks for 4147h vs. other value (5047h seen on Intel
  1277.       "Plato" motherboard)
  1278. SeeAlso: #00586,INT 16/AH=F2h
  1279. --------b-M004000CE--------------------------
  1280. MEM 0040h:00CEh    - COUNT OF DAYS SINCE LAST BOOT
  1281. Size:    WORD
  1282. --------*-M004000D0--------------------------
  1283. MEM 0040h:00D0h - RESERVED
  1284. Size:    32 BYTEs
  1285. --------S-M004000D0--------------------------
  1286. MEM 0040h:00D0h    - Digiboard MV/4 - LENGTH OF DATA TABLE
  1287. Size:    BYTE
  1288. --------d-M004000D0--------------------------
  1289. MEM 0040h:00D0h    EHD floppy - INSTALLATION FLAGS
  1290. Size:    BYTE
  1291.  
  1292. Bitfields for EHD floppy installation flags:
  1293. Bit(s)    Description    (Table M0051)
  1294.  4    installation completed
  1295.  3-0    drives 0-3
  1296. --------b-M004000D0--------------------------
  1297. MEM 0040h:00D0h    - AMI BIOS v1.00.12.AX1T - EPP - SCRATCH SPACE
  1298. Size:    WORD
  1299. Desc:    this word holds the value of BX during an EPP BIOS call
  1300. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00D5h"AMI",MEM 0040h:00D6h"AMI"
  1301. SeeAlso: MEM 0040h:00DDh"AMI"
  1302. --------S-M004000D1--------------------------
  1303. MEM 0040h:00D1h    - Digiboard MV/4 - PRODUCT ID
  1304. Size:    BYTE
  1305. --------S-M004000D2--------------------------
  1306. MEM 0040h:00D2h    - Digiboard MV/4 - BASE ADDRESS FOUND
  1307. Size:    WORD
  1308. --------b-M004000D2--------------------------
  1309. MEM 0040h:00D2h    - AMI BIOS v1.00.12.AX1T - EPP BASE I/O PORT
  1310. Size:    WORD
  1311. --------S-M004000D4--------------------------
  1312. MEM 0040h:00D4h    - Digiboard MV/4 - PORTS
  1313. Size:    BYTE
  1314. --------S-M004000D5--------------------------
  1315. MEM 0040h:00D5h    - Digiboard MV/4 - IRQ
  1316. Size:    BYTE
  1317. --------d-M004000D5--------------------------
  1318. MEM 0040h:00D5h    - EHD floppy - NUMBER OF FLOPPY DISK CONTROLLERS IN SYSTEM
  1319. Size:    BYTE
  1320. --------b-M004000D5--------------------------
  1321. MEM 0040h:00D5h    - AMI BIOS v1.00.12.AX1T - EPP - PARALLEL PORT 0 CAPABILITIES
  1322. Size:    BYTE
  1323. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00D6h"AMI",MEM 0040h:00D7h"AMI"
  1324. SeeAlso: MEM 0040h:00DCh"AMI"
  1325. --------d-M004000D6--------------------------
  1326. MEM 0040h:00D6h    - EHD floppy - AND-BITS TO ADJUST PORT ADDRESS
  1327. Size:    BYTE
  1328. Note:    this byte contains FFh if controller at 03Fxh and 7Fh if at 037xh; the
  1329.       value is ANDed with DL prior to using IN A?,DX or OUT DX,A?
  1330.       instructions
  1331. --------K-M004000D6--------------------------
  1332. MEM 0040h:00D6h - Digiboard MV/4 - NUMBER OF KEYBOARDS FOUND
  1333. Size:    WORD
  1334. SeeAlso: MEM 0040h:00D8h"Digiboard"
  1335. --------b-M004000D6--------------------------
  1336. MEM 0040h:00D6h    - AMI BIOS v1.00.12.AX1T - EPP - PARALLEL PORT 0 IRQ
  1337. Size:    BYTE
  1338. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00D5h"AMI",MEM 0040h:00D8h"AMI"
  1339. SeeAlso: MEM 0040h:00DDh"AMI"
  1340. --------d-M004000D7--------------------------
  1341. MEM 0040h:00D7h - EHD floppy - DRIVE 0 DISKETTE MEDIA STATE
  1342. Size:    BYTE
  1343. Note:    the value in this byte is copied into 0040h:0090h (diskette 0 status)
  1344. SeeAlso: MEM 0040h:00D8h"EHD",MEM 0040h:00D9h"EHD",MEM 0040h:00DAh"EHD"
  1345.  
  1346. Bitfields for EHD diskette media state:
  1347. Bit(s)    Description    (Table M0052)
  1348.  7-6    data rate: 00=500kbps,01=300kbps,10=250k,11=1M/S
  1349.  5    double stepping required (e.g. 360kB in 1.2MB)
  1350.  4    media type established
  1351.  3    reserved
  1352.  2-0    on exit from BIOS, contains:
  1353.     000 trying 360kB in 360kB
  1354.     001 trying 360kB in 1.2MB
  1355.     010 trying 1.2MB in 1.2MB
  1356.     011 360kB in 360kB established
  1357.     100 360kB in 1.2MB established
  1358.     101 1.2MB in 1.2MB established
  1359.     110 reserved (2M8?)
  1360.     111 all other formats/drives
  1361. --------b-M004000D7--------------------------
  1362. MEM 0040h:00D7h    - AMI BIOS v1.00.12.AX1T - EPP - PARALLEL PORT 1 CAPABILITIES
  1363. Size:    BYTE
  1364. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00D5h"AMI",MEM 0040h:00D6h"AMI"
  1365. SeeAlso: MEM 0040h:00DDh"AMI"
  1366. --------M-M004000D8--------------------------
  1367. MEM 0040h:00D8h - Digiboard MV/4 - NUMBER OF MICE FOUND
  1368. Size:    WORD
  1369. SeeAlso: MEM 0040h:00D6h"Digiboard",MEM 0040h:00DAh"Digiboard"
  1370. --------d-M004000D8--------------------------
  1371. MEM 0040h:00D8h - EHD floppy - DRIVE 1 DISKETTE MEDIA STATE
  1372. Size:    BYTE
  1373. SeeAlso: MEM 0040h:00D7h"EHD",MEM 0040h:00D9h"EHD",MEM 0040h:00DAh"EHD"
  1374. --------b-M004000D8--------------------------
  1375. MEM 0040h:00D8h - AMI BIOS v1.00.12.AX1T - EPP - PARALLEL PORT 1 IRQ
  1376. Size:    BYTE
  1377. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00D6h"AMI",MEM 0040h:00D7h"AMI"
  1378. SeeAlso: MEM 0040h:00DDh"AMI"
  1379. --------b-M004000D8--------------------------
  1380. MEM 0040h:00D8h U - Phoenix BIOS 4.0 Rel 6.0 - POWER MANAGEMENT FLAGS
  1381. Size:    BYTE
  1382. SeeAlso: INT 15/AX=5300h
  1383. --------d-M004000D9--------------------------
  1384. MEM 0040h:00D9h - EHD floppy - DRIVE 2 DISKETTE MEDIA STATE
  1385. Size:    BYTE
  1386. SeeAlso: MEM 0040h:00D7h"EHD",MEM 0040h:00D8h"EHD",MEM 0040h:00DAh"EHD"
  1387. --------S-M004000DA--------------------------
  1388. MEM 0040h:00DAh - Digiboard MV/4 - CURRENT PORT (used by VGA initializatn only)
  1389. Size:    BYTE
  1390. SeeAlso: MEM 0040h:00D8h"Digiboard"
  1391. --------d-M004000DA--------------------------
  1392. MEM 0040h:00DAh - EHD floppy - DRIVE 3 DISKETTE MEDIA STATE
  1393. Size:    BYTE
  1394. SeeAlso: MEM 0040h:00D7h"EHD",MEM 0040h:00D8h"EHD",MEM 0040h:00D9h"EHD"
  1395. --------S-M004000DB--------------------------
  1396. MEM 0040h:00DBh - Digiboard MV/4 - MASTER 8259 MASK (used by VGA init only)
  1397. Size:    BYTE
  1398. SeeAlso: MEM 0040h:00DCh"Digiboard"
  1399. --------d-M004000DB--------------------------
  1400. MEM 0040h:00DBh - EHD floppy - DRIVE 0 NEEDS RECALIBARATION
  1401. Size:    BYTE
  1402. SeeAlso: MEM 0040h:00DCh"EHD",MEM 0040h:00DDh"EHD",MEM 0040h:00DEh"EHD"
  1403. --------S-M004000DC--------------------------
  1404. MEM 0040h:00DCh - Digiboard MV/4 - SLAVE 8259 MASK (used by VGA init only)
  1405. Size:    BYTE
  1406. SeeAlso: MEM 0040h:00DBh"Digiboard"
  1407. --------b-M004000DC--------------------------
  1408. MEM 0040h:00DCh    - AMI BIOS v1.00.12.AX1T - EPP - PARALLEL PORT 0 MODE
  1409. Size:    BYTE
  1410. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00D5h"AMI",MEM 0040h:00DDh"AMI"
  1411. SeeAlso: INT 17/AX=0200h/BX=5050h
  1412.  
  1413. (Table M0053)
  1414. Values for AMI Enhanced Parallel Port mode:
  1415.  01h    compatibility mode
  1416.  02h    bi-directional mode
  1417.  04h    EPP mode
  1418. SeeAlso: #00637
  1419. --------d-M004000DC--------------------------
  1420. MEM 0040h:00DCh - EHD floppy - DRIVE 1 NEEDS RECALIBARATION
  1421. Size:    BYTE
  1422. SeeAlso: MEM 0040h:00DBh"EHD",MEM 0040h:00DDh"EHD",MEM 0040h:00DEh"EHD"
  1423. --------b-M004000DC--------------------------
  1424. MEM 0040h:00DCh    - AMI BIOS v1.00.12.AX1T - EPP - PARALLEL PORT 1 MODE
  1425. Size:    BYTE
  1426. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00DCh"AMI",#M0053
  1427. --------d-M004000DD--------------------------
  1428. MEM 0040h:00DDh - EHD floppy - DRIVE 2 NEEDS RECALIBARATION
  1429. Size:    BYTE
  1430. SeeAlso: MEM 0040h:00DBh"EHD",MEM 0040h:00DCh"EHD",MEM 0040h:00DEh"EHD"
  1431. --------d-M004000DE--------------------------
  1432. MEM 0040h:00DEh - EHD floppy - DRIVE 3 NEEDS RECALIBARATION
  1433. Size:    BYTE
  1434. SeeAlso: MEM 0040h:00DBh"EHD",MEM 0040h:00DCh"EHD",MEM 0040h:00DDh"EHD"
  1435. --------b-M004000DF--------------------------
  1436. MEM 0040h:00DFh    - AMI BIOS v1.00.12.AX1T - EPP - PARALLEL PORT LOCK STATE
  1437. Size:    BYTE
  1438. Note:    set to 01h if last request was to lock a port, 00h if last request was
  1439.       to unlock a port
  1440. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00DCh"AMI"
  1441. --------b-M004000E0--------------------------
  1442. MEM 0040h:00E0h    - AMI BIOS v1.00.12.AX1T - EPP - REAL-TIME DEVICE COUNT
  1443. Size:    BYTE
  1444. Desc:    contains the number of advertised real-time devices as set by EPP
  1445.       function 12h (see #00632)
  1446. SeeAlso: MEM 0040h:00D2h"AMI",MEM 0040h:00DFh"AMI"
  1447. --------b-M004000E0--------------------------
  1448. MEM 0040h:00E0h - Phoenix 386 BIOS - DRIVE PARAMETER TABLE FOR FIRST HARD DISK
  1449. Size:    16 BYTEs
  1450. Note:    this area is used to store the driver parameter table for the first
  1451.       hard disk if it has been setup as the user-configurable "type 47"
  1452. --------d-M004000E3--------------------------
  1453. MEM 0040h:00E3h - EHD floppy - DRIVE 0 DISKETTE TYPE (from jumpers)
  1454. Size:    BYTE
  1455. SeeAlso: MEM 0040h:00E4h,MEM 0040h:00E5h"EHD",MEM 0040h:00E6h"EHD"
  1456.  
  1457. (Table M0054)
  1458. Values for EHD floppy diskette type:
  1459.  01h    undefined by diskette change (360K)
  1460.  02h    1.2M
  1461.  03h    720K
  1462.  04h    1.44M
  1463.  05h    2.88M
  1464. --------d-M004000E4--------------------------
  1465. MEM 0040h:00E4h - EHD floppy - DRIVE 1 DISKETTE TYPE (from jumpers)
  1466. Size:    BYTE
  1467. SeeAlso: MEM 0040h:00E3h,MEM 0040h:00E5h"EHD",MEM 0040h:00E6h"EHD"
  1468. --------d-M004000E5--------------------------
  1469. MEM 0040h:00E5h - EHD floppy - DRIVE 2 DISKETTE TYPE (from jumpers)
  1470. Size:    BYTE
  1471. SeeAlso: MEM 0040h:00E3h,MEM 0040h:00E4h"EHD",MEM 0040h:00E6h"EHD"
  1472. --------d-M004000E6--------------------------
  1473. MEM 0040h:00E6h - EHD floppy - DRIVE 3 DISKETTE TYPE (from jumpers)
  1474. Size:    BYTE
  1475. SeeAlso: MEM 0040h:00E3h,MEM 0040h:00E4h"EHD",MEM 0040h:00E5h"EHD"
  1476. --------d-M004000EA--------------------------
  1477. MEM 0040h:00EAh - Omti controller - SEGMENT OF EXTENDED BIOS DATA AREA???
  1478. Size:    WORD
  1479. Note:    drive parameter tables stored in specified segment
  1480. --------b-M004000EC--------------------------
  1481. MEM 0040h:00ECh - Dell 4xxDE BIOS A11 - LOOP COUNT FOR DELAYS
  1482. Size:    WORD
  1483. ----------M004000F0--------------------------
  1484. MEM 0040h:00F0h - INTRA-APPLICATION COMMUNICATION AREA
  1485. Size:    16 BYTEs
  1486. --------B-M00500000--------------------------
  1487. MEM 0050h:0000h - PRINT-SCREEN STATUS
  1488. Size:    BYTE
  1489. --------J-M00500001--------------------------
  1490. MEM 0050h:0001h - NEC PC-9800 series - SCREEN MODE
  1491. Size:    BYTE
  1492. Note:    if bit 3 set, the screen is in high-resolution mode (start memory at
  1493.       segment E000h instead of A000h)
  1494. --------D-M00500004--------------------------
  1495. MEM 0050h:0004h - MS-DOS - LOGICAL DRIVE FOR SINGLE-FLOPPY SYSTEM (A: / B:)
  1496. Size:    BYTE
  1497. --------A-M0050000E--------------------------
  1498. MEM 0050h:000Eh - STATE OF BREAK CHECKING AT START OF BASICA.COM EXECUTION
  1499. Size:    BYTE
  1500. --------A-M0050000F--------------------------
  1501. MEM 0050h:000Fh - BASICA VERSION FLAG
  1502. Size:    BYTE
  1503. Note:    this byte contains the value 02h if BASICA v2.10 is running
  1504. --------A-M00500010--------------------------
  1505. MEM 0050h:0010h - POINTER TO BASIC DATA SEGMENT
  1506. Size:    WORD
  1507. --------A-M00500012--------------------------
  1508. MEM 0050h:0012h - INT 08 VECTOR AT START OF BASICA.COM EXECUTION
  1509. Size:    DWORD
  1510. --------A-M00500016--------------------------
  1511. MEM 0050h:0016h - INT 1B VECTOR AT START OF BASICA.COM EXECUTION
  1512. Size:    DWORD
  1513. --------A-M0050001A--------------------------
  1514. MEM 0050h:001Ah - INT 24 VECTOR AT START OF BASICA.COM EXECUTION
  1515. Size:    DWORD
  1516. --------D-M00600000--------------------------
  1517. MEM 0060h:0000h - DOS 2+ SCRATCH SPACE
  1518. Size:    256 BYTEs
  1519. Note:    used during DOS 2+ boot process               
  1520. --------D-M00600000--------------------------
  1521. MEM 0060h:0000h - DOS 1.x IO.SYS LOAD ADDRESS
  1522. --------D-M00700000--------------------------
  1523. MEM 0070h:0000h - DOS 2+ IO.SYS LOAD ADDRESS
  1524. --------D-M00700100--------------------------
  1525. MEM 0070h:0100h - DOS 5+ - ORIGINAL INTERRUPT VECTORS 10h,13h,15h,19h,1Bh
  1526. Size:    25 BYTEs
  1527. Note:    each value is stored as a BYTE for the interrupt number followed by
  1528.       a DWORD for the vector
  1529.     these values are restored on INT 19 by recent versions of
  1530.       DR/Novell/PC/MS-DOS (MS-DOS 3.x used this area to support HIMEM.SYS)
  1531.     not supported by OS/2 MDOS
  1532. SeeAlso: MEM 0080h:0000h,INT 2F/AH=13
  1533. --------H-M00800000--------------------------
  1534. MEM 0080h:0000h - 80286 CPU - LOADALL WORKSPACE
  1535. Size:    102 BYTEs
  1536. Desc:    on the 80286 (unlike 80386), the state buffer from which the LOADALL
  1537.       instruction loads all internal registers is hardwired to physical
  1538.       address 000800h
  1539. Note:    several versions 3.x of MS-DOS leave an empty space at offset 100h in
  1540.       IO.SYS (which is loaded at 0070h:0000h) so that HIMEM.SYS can use
  1541.       LOADALL on 80286 machines without having to save/restore the area
  1542.       of memory that LOADALL uses
  1543. SeeAlso: MEM 0070h:0100h
  1544. --------m-m80C00000--------------------------
  1545. MEM 80C00000h - Compaq Deskpro 386 system memory board register
  1546. Size:    BYTE
  1547.  
  1548. 80C00000  R   Diagnostics register (see #M0055)
  1549. 80C00000   W  RAM relocation register (see #M0056)
  1550.  
  1551. Bitfields for Compaq Deskpro 386 diagnostics register:
  1552. Bit(s)    Description    (Table M0055)
  1553.  7    =0 memory expansion board is installed
  1554.  6    =0 second 1 MB of system memory board is installed
  1555.  5-4    base memory
  1556.     00 set to 640 KB
  1557.     01 invalid
  1558.     10 set to 512 KB
  1559.     11 set to 256 KB
  1560.  3    parity correct in byte 3
  1561.  2    parity correct in byte 2
  1562.  1    parity correct in byte 1
  1563.  0    parity correct in byte 0 (in 32-bit double word)
  1564. SeeAlso: #M0056
  1565.  
  1566. Bitfields for Compaq Deskpro 386 RAM relocation register:
  1567. Bit(s)    Description    (Table M0056)
  1568.  7-2    reserved, always write 1's.
  1569.  1    =0  Write-protect 128-Kbyte RAM at FE0000.
  1570.     =1  Do not write-protect RAM at FE0000.
  1571.  0    =0  Relocate 128-Kbyte block at FE0000 to address 0E0000
  1572.     =1  128-Kbyte RAM is addressed only at FE0000.
  1573. SeeAlso: #M0055
  1574. --------V-MA0000000--------------------------
  1575. MEM A000h:0000h - EGA+ GRAPHICS BUFFER
  1576. Size:    65536 BYTEs
  1577. --------V-MA0000000--------------------------
  1578. MEM A000h:0000h - S3 - MEMORY-MAPPED GRAPHICS PROCESSOR REGISTERS
  1579. Size:    65536 BYTEs
  1580. Note:    the S3 graphics processor registers can be mapped at either
  1581.       linear 000A0000h or at offset 16M from the start of the linear
  1582.       frame buffer
  1583. --------V-MA0001234--------------------------
  1584. MEM A000h:1234h - S3 - MEMORY-MAPPED ???
  1585. Size:    WORD???
  1586. Note:    the Win95 driver for the Stealth64 tests various bits in this word,
  1587.       sometimes looping until a particular bit is set or cleared
  1588. --------V-MA0008000--------------------------
  1589. MEM A000h:8000h - S3 - MEMORY-MAPPED PCI CONFIGURATION REGISTERS
  1590. Size:    256 BYTEs
  1591. Notes:    the S3 graphics processor registers can be mapped at either
  1592.       linear 000A0000h or at offset 16M from the start of the linear
  1593.       frame buffer
  1594.     additional setup may be required to access these registers via memory
  1595.     the DWORDs at 8080h,8088h,808Ch,8090h,8094h,8098h,809Ch are used by
  1596.       STLTH64.DRV
  1597.     the DWORDs at 18080h,18088h,18090h,18094h,18098h,1809Ch are written
  1598.       by S3_32.DLL
  1599. --------V-MA0008100--------------------------
  1600. MEM A000h:8100h - S3 - MEMORY-MAPPED PACKED REGISTERS
  1601. Size:    80 BYTEs
  1602. Access:    Write-Only
  1603. Desc:    these registers pack two 16-bit I/O registers into a single DWORD
  1604.       for faster writes
  1605. Note:    the S3 graphics processor registers can be mapped at either
  1606.       linear 000A0000h or at offset 16M from the start of the linear
  1607.       frame buffer
  1608. SeeAlso: MEM A000h:8180h
  1609.  
  1610. Format of S3 Trio32/Trio64 packed memory-mapped registers:
  1611. Offset    Size    Description    (Table M0057)
  1612. 8100h    DWORD    drawing control: row (low word), column (high word)
  1613.         "CUR_X" and "CUR_Y" (see PORT 82E8h,PORT 86E8h)
  1614. 8104h    DWORD    (Trio64) drawing control: row 2 (low word), column 2 (high word)
  1615. 8108h    DWORD    drawing control: destination Y and axial step constant (low
  1616.           word), destination X and axial step constant (high word)
  1617.         (see PORT 8AE8h,PORT 8EE8h)
  1618. 810Ch    DWORD    (Trio64 only) destination Y 2 and axial step constant 2 (low
  1619.           word), destination X 2 and axial step constant 2 (high word)
  1620.         (see PORT 8AEAh,PORT 8EEAh)
  1621. 8110h    WORD    error term (see PORT 92E8h)
  1622. 8112h    WORD    (Trio64) error term 2 (see PORT 92EAh)
  1623. 8114h    DWORD    unused??? (would correspond to PORT 96E8h)
  1624. 8118h    WORD    drawing control: command register (see PORT 9AE8h)
  1625. 811Ah    WORD    (Trio64) command register 2 (see PORT 9AEAh)
  1626. 811Ch    DWORD    short stroke (see PORT 9EE8h)
  1627. 8120h    DWORD    background color (see PORT A2E8h)
  1628. 8124h    DWORD    foreground color (see PORT A6E8h)
  1629. 8128h    DWORD    write mask (see PORT AAE8h)
  1630. 812Ch    DWORD    read mask (see PORT AEE8h)
  1631. 8130h    DWORD    color compare (see PORT B2E8h)
  1632. 8134h    DWORD    background mix (low word) and foreground mix (high word)
  1633.         (see PORT B6E8h,PORT BAE8h)
  1634. 8138h    DWORD    top scissors (low word) and left scissors (high word)
  1635.         (see PORT BEE8h,#P1047)
  1636. 813Ch    DWORD    bottom scissors (low word) and right scissors (high word)
  1637.         (see PORT BEE8h,#P1047)
  1638. 8140h    DWORD    data manipulation control (low word) and miscellaneous 2 (high
  1639.           word) (see PORT BEE8h,#P1047)
  1640. 8144h    DWORD    miscellaneous (low word) and read register select (high word)
  1641.         (see PORT BEE8h,#P1047)
  1642. 8148h    DWORD    minor axis pixel count (low word) and major axis pixel count
  1643.           (high word) (see PORT BEE8h,#P1047,PORT 96E8h)
  1644. 814Ch    WORD    (Trio64) major axis pixel count 2 (see PORT 96EAh)
  1645. 8150h    DWORD    pixel data transfer (see PORT E2E8h,PORT E2EAh)
  1646. 8154h 4 DWORDs    ???
  1647. 8164h    DWORD    ??? (written by STLTH64.DRV for Win95)
  1648. 8168h    DWORD    (Trio64 only) Pattern Y (low word), Pattern X (high word)
  1649.         (see PORT EAE8h,PORT EAEAh)
  1650. 816Ch    DWORD    ??? (written by STLTH64.DRV for Win95)
  1651. Note:    setting 8138h to 0 and 813Ch to 12345678h may be a magic value to unlock
  1652.       some S3 features
  1653. SeeAlso: #M0073,#M0070
  1654. --------V-MA0008180--------------------------
  1655. MEM A000h:8180h - S3 - STREAMS PROCESSOR
  1656. Size:    128 BYTEs
  1657. Note:    the S3 graphics processor registers can be mapped at either
  1658.       linear 000A0000h or at offset 16M from the start of the linear
  1659.       frame buffer
  1660. SeeAlso: MEM A000h:8100h,MEM A000h:FF00h
  1661.  
  1662. Format of S3 Streams Processor memory-mapped registers:
  1663. Offset    Size    Description    (Table M0058)
  1664. 8180h    DWORD    primary stream control (see #M0059)
  1665. 8184h    DWORD    chroma key control (see #M0063)
  1666. 8188h    DWORD    unused??? (high word seems to echo 8184h, low word 8180h)
  1667. 818Ch    DWORD    unused??? (high word seems to echo 8184h, low word 8180h)
  1668. 8190h    DWORD    secondary stream control (see #M0061)
  1669. 8194h    DWORD    chroma key upper bound (bits 23-0) (see also #M0063)
  1670. 8198h    DWORD    secondary stream stretch (see #M0062)
  1671. 819Ch    DWORD    ??? (set by S3_32.DLL)
  1672.         bits 30-16: ???
  1673.         bits 14-0: ???
  1674. 81A0h    DWORD    blend control (see #M0064)
  1675. 81A4h 3 DWORDs    unused??? (reads as FFFFFFFFh)
  1676. 81B0h 4 DWORDs    ??? (appear to be read-only)
  1677. 81C0h    DWORD    primary frame buffer address 0 (bits 21-0, multiple of 8)
  1678. 81C4h    DWORD    primary frame buffer address 1 (bits 21-0, multiple of 8)
  1679. 81C8h    DWORD    primary stream stride (bits 11-0 only)
  1680. 81CCh    DWORD    double buffer/LPB control (see #M0065)
  1681. 81D0h    DWORD    secondary frame buffer address 0 (bits 21-0, multiple of 8)
  1682. 81D4h    DWORD    secondary frame buffer address 1 (bits 21-0, multiple of 8)
  1683. 81D8h    DWORD    secondary stream stride (bits 11-0 only)
  1684. 81DCh    DWORD    opaque overlay control (see #M0066)
  1685. 81E0h    DWORD    K1 -- vertical stretch (lines in) (bits 10-0 only)
  1686.         set to one less than # lines in
  1687. 81E4h    DWORD    K2 -- vertical stretch (stretch factor) (bits 10-0 only)
  1688.         set to -(#lines_in - #lines_out)
  1689. 81E8h    DWORD    DDA vertical accumulator (bits 11-0 only) (lines out)
  1690.         set to (#lines_out) - 1
  1691. 81ECh    DWORD    streams FIFO and RAS control (see #M0067)
  1692. 81F0h    DWORD    primary start coordinate (see #M0068)
  1693. 81F4h    DWORD    primary window size (see #M0069)
  1694. 81F8h    DWORD    secondary start coordinate (see #M0068)
  1695. 81FCh    DWORD    secondary window size (see #M0069)
  1696. Note:    changes to registers 81E0h-81E8h do not take effect until the next
  1697.       VSYNC
  1698. SeeAlso: #M0073,#M0057,#M0070
  1699.  
  1700. Bitfields for S3 Streams Processor primary stream control:
  1701. Bit(s)    Description    (Table M0059)
  1702.  31    reserved
  1703.  30-28    filter characteristics
  1704.     000 unchanged primary stream
  1705.     001 2X stretch by replicating pixels
  1706.     010 2X stretch by interpolating horizontally (replicating vertically)
  1707.     else reserved
  1708.  27    reserved
  1709.  26-24    color mode (see #M0060)
  1710.  23-0    officially reserved, but writing nonzero values can hang display
  1711. Notes:    the primary stream is the output from the display RAM
  1712.     bits 26-24 correspond to CR67 color mode field (see #P0688)
  1713. SeeAlso: #M0058,#M0061
  1714.  
  1715. (Table M0060)
  1716. Values for S3 Streams Processor color mode:
  1717.  000b    eight bits per pixel
  1718.  001b    YCrCb 4:2:2 unsigned, range 10h-F0h (secondary stream only)
  1719.  010b    YUV 4:2:2, range 00h-FFh  (secondary stream only)
  1720.  011b    keyed high-color (1-5-5-5)
  1721.  100b    YUV 2:1:1 two's complement (secondary stream only)
  1722.  101b    high-color (5-6-5)
  1723.  110b    reserved
  1724.  111b    true-color (32bpp, high byte ignored)
  1725. SeeAlso: #M0059,#M0061
  1726.  
  1727. Bitfields for S3 Streams Processor secondary stream control:
  1728. Bit(s)    Description    (Table M0061)
  1729.  31    reserved
  1730.  30-28    filter characteristics
  1731.     000 unchanged secondary stream
  1732.     001 linear 0-2-4-2-0 for 1x-2x stretch
  1733.     010 bi-linear for 2x-4x stretch
  1734.     011 linear 1-2-2-2-1 for 4x+ stretch
  1735.     else reserved
  1736.  28    enable smoothing between horizontally adjacent bits (trial-and-error)
  1737.  27    reserved
  1738.  26-24    color mode (see #M0060,#M0074)
  1739.  23-12    reserved
  1740.  11-0    initial value of DDA horizontal accumulator
  1741.     set to 2*(inwidth-1)-(outwidth-1)
  1742. Notes:    the secondary stream is typically live video, but can be pointed at
  1743.       any part of video memory
  1744.     changes to this register do not take effect until the next VSYNC
  1745. SeeAlso: #M0058,#M0059,#M0062
  1746.  
  1747. Bitfields for S3 Streams Processor stretch/filter constants:
  1748. Bit(s)    Description    (Table M0062)
  1749.  31-27    reserved
  1750.  26-16    K2 horizontal scaling factor (input width - output width)
  1751.  15-11    reserved
  1752.  10-0    K1 horizontal scaling factor (input width - 1)
  1753. Note:    changes to this register do not take effect until the next VSYNC
  1754. SeeAlso: #M0061
  1755.  
  1756. Bitfields for S3 Streams Processor chroma-key control:
  1757. Bit(s)    Description    (Table M0063)
  1758.  31-29    reserved
  1759.  28    key control
  1760.     =1 normal color-key or chroma-key
  1761.     =0 (keyed RGB 1-5-5-5 mode only) extract key from high bit of input
  1762.       stream; if key bit is clear, show pixel from other stream
  1763.  27    reserved
  1764.  26-24    color comparison precision
  1765.     000 compare bit 7 of R,G, and B values only
  1766.     001 compare bits 7-6
  1767.     ...
  1768.     111 compare bits 7-0
  1769.  23-0    chroma-key color value
  1770.     23-16 = red or Y
  1771.     15-8 = green or U/Cb
  1772.     7-0 = blue or V/Cr
  1773. Note:    if the keyed stream is YUV or YCrCb, then this register contains the
  1774.       lower bound and 8194h contains the upper bound of the chromakey
  1775.       value
  1776. SeeAlso: #M0058
  1777.  
  1778. Bitfields for S3 Streams Processor blend control:
  1779. Bit(s)    Description    (Table M0064)
  1780.  31-27    reserved (unused)
  1781.  26-24    blend type
  1782.     000 show secondary stream (video) overlaying primary stream
  1783.     001 show primary stream overlaying secondary stream
  1784.     010 blend pri/sec. streams (dissolve, secondary intensity = full-prim.)
  1785.     011 blend pri/sec. streams
  1786.     100 reserved (blank display)
  1787.     101 show secondary stream only where chroma-key color present
  1788.     110 show secondary stream (video) unconditionally
  1789.     111 reserved (blank display)
  1790.  23-14    reserved
  1791.  13    ??? (officially reserved, but set by S3_32.DLL)
  1792.  12-8    primary stream intensity (00h-1Ch, must be multiple of 4)
  1793.  4-0    secondary stream intensity (00h-1Ch, must be multiple of 4)
  1794.     (ignored for blend type 010)
  1795. Notes:    for blend type 011, the primary and secondary stream intensities should
  1796.       not total more than 20h to avoid wraparounds which appear as
  1797.       incorrect colors; for blend type 010, the secondary stream intensity
  1798.       is automatically computed as 20h - bits12-8
  1799.     changes to this register do not take effect until the next VSYNC
  1800. SeeAlso: #M0058
  1801.  
  1802. Bitfields for S3 Streams Processor double-buffer/LPB control:
  1803. Bit(s)    Description    (Table M0065)
  1804.  31-7    reserved (unused; all but bit 7 appear to be read-only, as well)
  1805.  6    LPB frame buffer auto-toggle
  1806.     if set, End-of-Frame toggles bit 4
  1807.  5    delay loading LPB input buffer select until next End-of-Frame
  1808.  4    LPB input buffer select (see #M0073)
  1809.     0 use LPB frame buffer address 0 (FF0Ch) for incoming video data
  1810.     1 use LPB frame buffer address 1 (FF10h)
  1811.  3    reserved
  1812.  2-1    secondary stream buffer select
  1813.     00 use frame buffer address 0 (81D0h)
  1814.     01 use frame buffer address 1 (81D4h)
  1815.     1x use frame buffer 0/1 (81D0h/81D4h) selected by bit 4 for secondary
  1816.        stream and selected LPB frame buffer for LPB input
  1817.  0    primary stream buffer select
  1818.     =0 use frame buffer address 0 (81C0h)
  1819.     =1 use frame buffer address 1 (81C4h)
  1820. SeeAlso: #M0058,#M0073
  1821.  
  1822. Bitfields for S3 Streams Processor opaque overlay control:
  1823. Bit(s)    Description    (Table M0066)
  1824.  31    enable opaque overlay control
  1825.  30    select top stream (0 = secondary on top, 1 = primary)
  1826.  29    reserved
  1827.  28-19    pixel resume fetch
  1828.     number of quadwords from background's left edge to position at which
  1829.       to start fetching pixels again
  1830.  18-13    reserved
  1831.  12-3    pixel stop fetch
  1832.     number of quadwords from background's left edge to position at which
  1833.       to stop fetching pixels
  1834.  2-0    reserved
  1835. SeeAlso: #M0058
  1836.  
  1837. Bitfields for S3 Streams Processor streams FIFO and RAS control register:
  1838. Bit(s)    Description    (Table M0067)
  1839.  31-22    reserved (0)
  1840.  21    skip 0.5 MCLK delay of PD[63:0] output (default = 0)
  1841.  20    skip memory arbitration for ROM cycles (default = 0)
  1842.  19    do not tristate PD[63:16] during ROM cycles (default = 0)
  1843.     (set by Win95 driver when using ISA bus)
  1844.  18    EDO wait state control (LPB memory cycles only)
  1845.     =0 two-cycle accesses
  1846.     =1 one-cycle EDO accesses
  1847.  17    reserved
  1848.  16    RAS# pre-charge control
  1849.     =0 use CR68(bit3) setting (2.5/3.5 MCLKs)
  1850.     =1 1.5 MCLKs
  1851.  15    RAS# low control
  1852.     =0 use CR68(bit2) setting (3.5/4.5 MCLKs)
  1853.     =1 2.5 MCLKs
  1854.  14-10    primary stream FIFO threshold
  1855.     number of filled quadword slots at which to request refilling
  1856.  9-5    secondary stream FIFO threshold
  1857.     number of filled quadword slots at which to request refilling
  1858.  4-0    FIFO allocation, in quadword slots
  1859.     00000 primary stream = 24, secondary = 0
  1860.     01000 primary stream = 16, secondary = 8
  1861.     01100 primary stream = 12, secondary = 12
  1862.     10000 primary stream = 8, secondary = 16
  1863.     11000 primary stream = 0, secondary = 24
  1864.     else reserved
  1865. SeeAlso: #M0058
  1866.  
  1867. Bitfields for S3 Streams Processor start coordinate:
  1868. Bit(s)    Description    (Table M0068)
  1869.  31-27    reserved (read-only)
  1870.  26-16    X coordinate (column) of upper left corner, plus 1
  1871.  15-11    reserved (read-only)
  1872.  10-0    Y coordinate (row) of upper left corner, plus 1
  1873. SeeAlso: #M0058,#M0069
  1874.  
  1875. Bitfields for S3 Streams Processor window size:
  1876. Bit(s)    Description    (Table M0069)
  1877.  31-27    reserved (read-only)
  1878.  26-16    width in pixels - 1
  1879.  15-11    reserved (read-only)
  1880.  10-0    height in scan lines
  1881. SeeAlso: #M0058,#M0068
  1882. --------V-MA0008200--------------------------
  1883. MEM A000h:8200h - S3 ViRGE - MEMORY-MAPPED MEMORY-PORT CONTROL REGISTERS
  1884. Size:    40 BYTEs
  1885. Note:    the S3 graphics processor registers can be mapped at either
  1886.       linear 000A0000h or at offset 16M from the start of the linear
  1887.       frame buffer
  1888.  
  1889. Format of S3 memory-maped port control registers:
  1890. Offset    Size    Description    (Table M0070)
  1891. 8200h    DWORD    FIFO control
  1892. 8204h    DWORD    MIU control
  1893. 8208h    DWORD    streams timeout
  1894. 820Ch    DWORD    miscellaneous timeout
  1895. 8210h 4 DWORDs    ???
  1896. 8220h    DWORD    DMA read base address
  1897. 8224h    DWORD    DMA read stride width
  1898. SeeAlso: #M0057
  1899. --------V-MA00082E8--------------------------
  1900. MEM A000h:82E8h - S3 - MEMORY-MAPPED CURRENT Y POSITION REGISTER
  1901. Size:    WORD
  1902. Note:    the S3 graphics processor registers can be mapped at either
  1903.       linear 000A0000h or at offset 16M from the start of the linear
  1904.       frame buffer
  1905. SeeAlso: PORT 82E8h
  1906. --------V-MA00083B0--------------------------
  1907. MEM A000h:83B0h - S3 - MEMORY-MAPPED VGA REGISTERS
  1908. Size:    48 BYTEs
  1909. Note:    the S3 graphics processor registers can be mapped at either
  1910.       linear 000A0000h or at offset 16M from the start of the linear
  1911.       frame buffer
  1912. SeeAlso: PORT 03B0h,PORT 03C0h,PORT 03D0h
  1913. --------V-MA0008504--------------------------
  1914. MEM A000h:8504h - S3 ViRGE - MEMORY-MAPPED SUBSYSTEM REGISTERS
  1915. Size:    12 BYTEs
  1916. Note:    the S3 graphics processor registers can be mapped at either
  1917.       linear 000A0000h or at offset 16M from the start of the linear
  1918.       frame buffer
  1919.  
  1920. Format of S3 memory-mapped subsystem registers:
  1921. Offset    Size    Description    (Table M0071)
  1922. 8504h    DWORD    subsystem Control/Status Register (see PORT 42E8h,PORT 9AE8h)
  1923.         on read:
  1924.             bit 13 indicates whether graphics processor is busy
  1925.             bits 12-8 indicate number of free FIFO slots
  1926. 8508h    DWORD    ???
  1927. 850Ch    DWORD    advanced function control (see PORT 4AE8h)
  1928. SeeAlso: #M0073,#M0057,#M0072
  1929. --------V-MA0008580--------------------------
  1930. MEM A000h:8580h - S3 - MEMORY-MAPPED DMA REGISTERS
  1931. Size:    32 BYTEs
  1932. Note:    the S3 graphics processor registers can be mapped at either
  1933.       linear 000A0000h or at offset 16M from the start of the linear
  1934.       frame buffer
  1935.  
  1936. Format of S3 memory-mapped DMA registers:
  1937. Offset    Size    Description    (Table M0072)
  1938. 8580h    DWORD    start address in system memory
  1939. 8584h    DWORD    transfer length
  1940. 8588h    DWORD    transfer enable
  1941. 858Ch    DWORD    ???
  1942. 8590h    DWORD    DMA base address
  1943. 8594h    DWORD    DMA write pointer
  1944. 8598h    DWORD    DMA read pointer
  1945. 859Ch    DWORD    DMA enable
  1946. SeeAlso: #M0057,#M0073
  1947. --------V-MA00086E8--------------------------
  1948. MEM A000h:86E8h - S3 - MEMORY-MAPPED ENHANCED REGISTERS
  1949. Size:    ? BYTEs
  1950. Note:    the S3 graphics processor registers can be mapped at either
  1951.       linear 000A0000h or at offset 16M from the start of the linear
  1952.       frame buffer
  1953. --------V-MA000A000--------------------------
  1954. MEM A000h:A000h - S3 - MEMORY-MAPPED COLOR PALETTE REGISTERS
  1955. Size:    448 BYTEs
  1956. Note:    the S3 graphics processor registers can be mapped at either
  1957.       linear 000A0000h or at offset 16M from the start of the linear
  1958.       frame buffer
  1959. --------V-MA000A4D4--------------------------
  1960. MEM A000h:A4D4h - S3 - MEMORY-MAPPED BLT-FILL REGISTERS
  1961. Size:    60 BYTEs
  1962. Note:    the S3 graphics processor registers can be mapped at either
  1963.       linear 000A0000h or at offset 16M from the start of the linear
  1964.       frame buffer
  1965.  
  1966. A4D4h    DWORD    ???
  1967. A4D8h    DWORD    ???
  1968. A4DCh    DWORD    ??? (set to 07FFh by S3_32.DLL)
  1969. A4E0h    DWORD    ??? (set to 07FFh by S3_32.DLL)
  1970. A4E4h    DWORD    ???
  1971. A4E8h    DWORD    ???
  1972. A4ECh    DWORD    ???
  1973. A4F0h
  1974. A4F4h    DWORD    ???
  1975. A4F8h
  1976. A4FCh    DWORD    ???
  1977. A500h    DWORD    ???
  1978. A504h    DWORD    ???
  1979. A508h    DWORD    ???
  1980. A50Ch    DWORD    ???
  1981. --------V-MA000A8D4--------------------------
  1982. MEM A000h:A8D4h - S3 - MEMORY-MAPPED LINE REGISTERS
  1983. Size:    172 BYTEs
  1984. Note:    the S3 graphics processor registers can be mapped at either
  1985.       linear 000A0000h or at offset 16M from the start of the linear
  1986.       frame buffer
  1987. --------V-MA000ACD4--------------------------
  1988. MEM A000h:ACD4h - S3 - MEMORY-MAPPED POLYGON-FILL REGISTERS
  1989. Size:    172 BYTEs
  1990. Note:    the S3 graphics processor registers can be mapped at either
  1991.       linear 000A0000h or at offset 16M from the start of the linear
  1992.       frame buffer
  1993. --------V-MA000B0D4--------------------------
  1994. MEM A000h:B0D4h - S3 - MEMORY-MAPPED 3D-LINE REGISTERS
  1995. Size:    172 BYTEs
  1996. Note:    the S3 graphics processor registers can be mapped at either
  1997.       linear 000A0000h or at offset 16M from the start of the linear
  1998.       frame buffer
  1999. --------V-MA000B4D4--------------------------
  2000. MEM A000h:B4D4h - S3 - MEMORY-MAPPED 3D-TRIANGLE REGISTERS
  2001. Size:    172 BYTEs
  2002. Note:    the S3 graphics processor registers can be mapped at either
  2003.       linear 000A0000h or at offset 16M from the start of the linear
  2004.       frame buffer
  2005. --------V-MA000FF00--------------------------
  2006. MEM A000h:FF00h - S3 - MEM-MAPPED "SCENIC HIGHWAY" (Local Periph. Bus) ACCESS
  2007. Size:    64 DWORDs
  2008. Note:    the S3 graphics processor registers can be mapped at either
  2009.       linear 000A0000h or at offset 16M from the start of the linear
  2010.       frame buffer
  2011. SeeAlso: MEM A000h:8180h
  2012.  
  2013. Format of S3 Local Peripheral Bus memory-mapped registers:
  2014. Offset    Size    Description    (Table M0073)
  2015. FF00h    DWORD    LPB mode (see #M0074)
  2016. FF04h    DWORD    LPB FIFO status (see #M0075)
  2017. FF08h    DWORD    interrupt status (see #M0076)
  2018. FF0Ch    DWORD    frame buffer address 0 (bits 21-0, multiple of 8)
  2019.         offset within frame buffer at which to store incoming data from
  2020.           LPB when Streams Processor double-buffer control (see #M0065)
  2021.           bit 4 clear
  2022. FF10h    DWORD    frame buffer address 1 (bits 21-0, multiple of 8)
  2023.         offset within frame buffer at which to store incoming data from
  2024.           LPB when Streams Processor double-buffer control (see #M0065)
  2025.           bit 4 is set
  2026. FF14h    DWORD    "direct address" = index for FF18h (see #M0077)
  2027. FF18h    DWORD    "direct data" (see #M0077)
  2028.         Note: the direct address/direct data registers presumably rely
  2029.           on the attached device inserting data into the digital video
  2030.           stream, as on a Diamond Stealth64 Video, the "direct data"
  2031.           appears to reflect the video stream data (i.e. it varies, but
  2032.           with a pattern that depends on the video image, and stops
  2033.           varying when video is frozen)
  2034. FF1Ch    DWORD    general purpose I/O (see #M0078)
  2035. FF20h    DWORD    LPB serial port -- I2C/DDC access (see #M0079)
  2036. FF24h    DWORD    input window size (high word = rows, low word = columns)
  2037. FF28h    DWORD    data offsets
  2038.         (video alignment; high word = rows ; low word = columns)
  2039. FF2Ch    DWORD    horizontal decimation
  2040.         bits 0-31 set indicate that bytes 0-31 (mod 32)
  2041.           of each line should be dropped (in Video16 mode, each bit
  2042.           controls a WORD); decimation is aligned with the start of
  2043.           line as specified by the data offsets at FF28h
  2044. FF30h    DWORD    vertical decimation
  2045.         bits 0-31 set indicate that lines 0-31 (mod 32) should be
  2046.           dropped, i.e. setting this DWORD to 55555555h will drop
  2047.           every other line; decimation starts with VSYNC regardless
  2048.           of the data offsets specified at FF28h
  2049. FF34h    DWORD    line stride (number of bytes between starts of successive lines
  2050.           of video data)
  2051.         must be multiple of 4 -- lowest two bits forced to 0
  2052. FF38h    3 DWORDs unused??? (seem to echo FF34h)
  2053. FF40h 8 DWORDs    LPB output FIFO - data transfer
  2054.         writing to ANY of these DWORDs transfers a value to the FIFO;
  2055.           this organization allows use of a REP MOVSD instruction to
  2056.           fill the FIFO
  2057.         on ISA bus, there must be a delay between successive writes
  2058. SeeAlso: #M0058
  2059.  
  2060. Bitfields for S3 Local Peripheral Bus LPB Mode register:
  2061. Bit(s)    Description    (Table M0074)
  2062.  0    enable LPB
  2063.  3-1    LPB operational mode
  2064.     000 Scenic/MX2
  2065.     001 Video 16 (PCI only)
  2066.     010 Video 8 In
  2067.         used by Philips SAA7110/SAA7111 and Diamond's DTV1100
  2068.     011 Video 8 In/Out
  2069.         used by CL-480
  2070.     100 Pass-Through
  2071.         send FIFO data written by CPU through the decimation logic
  2072.     else reserved (Trio64V+)
  2073.  4    LBP Reset
  2074.     pulse this bit before changing operational mode
  2075.  5    skip every other frame
  2076.     =0 write all received frames to memory
  2077.  6    disable byte-swapping
  2078.     =0 incoming 8-bit video is in order U, Y0, V, Y1 (CL-480)
  2079.     =1 incoming 8-bit video is in order Y0, U, Y1, V (SAA711x)
  2080.     (refer to bit 26 below)
  2081.  8-7    officially reserved
  2082.  7    ??? messes up video image when set
  2083.  9    LPB vertical sync input polarity
  2084.     =0 active low
  2085.     =1 active high
  2086.  10    LPB horizontal sync input polarity
  2087.     =0 active low
  2088.     =1 active high
  2089.  11    (write-only) CPU VSYNC
  2090.     writing a 1 makes Trio act as if LPB VSYNC had been received
  2091.  12    (write-only) CPU HSYNC
  2092.     writing a 1 makes Trio act as if LPB HSYNC had been received
  2093.  13    (write-only) load base address
  2094.     writing a 1 causes an immediate load of the currently active base
  2095.       address
  2096.  15-14    reserved
  2097.  17-16    maximum compressed data burst, LPB to Scenic/MX2
  2098.     00 one DWORD
  2099.     01 two DWORDs
  2100.     10 three DWORDs
  2101.     11 burst until empty (must ensure that MX2's 8-entry FIFO is not
  2102.       overrun)
  2103.  20-18    reserved
  2104.  22-21    video FIFO threshold
  2105.     number of filled slots at which to request that Trio's memory manager
  2106.       begin to empty the FIFO (00 = one slot, 01 = two slots, 10 = four
  2107.       slots, 11 = six slots)
  2108.  23    reserved (read-only)
  2109.  24    LPB clock source
  2110.     =0 driven by SCLK (Pin194) (for Trio64-compatibility mode)
  2111.     =1 driven by LCLK (Pin148) (default)
  2112.  25    don't add line stride after first HSYNC within VSYNC
  2113.     must be set if first HSYNC occurs before VSYNC goes active
  2114.  26    invert LCLK (only has effect if bit 24 set)
  2115.  27    reserved
  2116.  28    (not yet on Trio64V+) current odd/even video field status
  2117.  29    (not yet on Trio64V+) field inversion - when set, the LPB's FIELD pin
  2118.       state is inverted before being reported in bit 28
  2119.  30    reserved
  2120.  31    (read-only) current state of CFLEVEL input (Pin182) in Video In/Out
  2121.       mode (refer to bits 3-1)
  2122. SeeAlso: #M0073
  2123.  
  2124. Bitfields for S3 Local Peripheral Bus LPB FIFO status:
  2125. Bit(s)    Description    (Table M0075)
  2126.  31    video FIFO 1 is almost empty (has exactly one full slot)
  2127.  30    video FIFO 1 is empty
  2128.  29    video FIFO 1 is full
  2129.  28-23    reserved
  2130.  22    video FIFO 0 is almost empty (has exactly one full slot)
  2131.  21    video FIFO 0 is empty
  2132.  20    video FIFO 0 is full
  2133.  19-14    reserved
  2134.  13    output FIFO is almost empty (has exactly one full slot)
  2135.  12    output FIFO is empty
  2136.  11    output FIFO is full
  2137.  10-4    reserved
  2138.  3-0    number of free four-byte slots in FIFO (there are 8 slots)
  2139. SeeAlso: #M0073,#M0076
  2140.  
  2141. Bitfields for S3 Local Peripheral Bus interrupt status:
  2142. Bit(s)    Description    (Table M0076)
  2143.  31-25    reserved
  2144.  24    drive serial port clock line low on receipt of start condition
  2145.     (causes I2C wait states until interrupt handler responds to start cond)
  2146.  23-20    reserved
  2147.  19    enable interrupt on I2C start condition detection
  2148.  18    enable interrupt on end of frame (VSYNC received)
  2149.  17    enable interrupt on end of line (HSYNC received)
  2150.  16    enable interrupt on LPB output FIFO empty
  2151.  15-4    reserved
  2152.  3    serial port detected I2C start condition
  2153.  2    VSYNC received (end of frame)
  2154.  1    HSYNC received (end of line)
  2155.  0    LPB output FIFO emptied
  2156. Note:    bits 3-0 are write-clear: writing a 1 to a bit resets it
  2157. SeeAlso: #M0073,#P0721
  2158.  
  2159. (Table M0077)
  2160. Values for S3 Local Peripheral Bus "direct address" index:
  2161.  0000h CP3 installation (FF18h reads 00C3h if installed)
  2162.  0001h ?
  2163.  0002h ?
  2164.  0003h ?
  2165.     bit 7: ???
  2166.     bits 6-0: ???
  2167.  0004h ?
  2168.  0005h ?
  2169.     bits 7-0: ???
  2170.  0020h ? (set to 107D4h, 1xxD4h by CP3.DLL))
  2171.  0028h ?
  2172.  0034h ? (set to 10000h by CP3.DLL)
  2173.  0414h ? (set by CP3.DLL)
  2174.  0500h ?
  2175.  0504h ?
  2176.  0508h ?
  2177.  050Ch ?
  2178.  0510h ?
  2179. SeeAlso: #M0073
  2180.  
  2181. Bitfields for S3 Local Peripheral Bus General-Purpose I/O:
  2182. Bit(s)    Description    (Table M0078)
  2183.  3-0    values to drive onto LPB GP output lines whenever CR5C is written
  2184.  7-4    values of GP input lines (read-only), latched whenever CR5C is read
  2185.  31-8    unused (read-only 0)
  2186. SeeAlso: #M0073
  2187.  
  2188. Bitfields for S3 Local Peripheral Bus serial-port register:
  2189. Bit(s)    Description    (Table M0079)
  2190.  0    I2C clock line [SCL] (write)
  2191.     =1 tri-state SCL, allowing other devices to pull it low
  2192.  1    I2C data line [SDA] (write)
  2193.     =1 tri-state SDA, allowing other devices to pull it low
  2194.  2    I2C clock line (read)
  2195.     this bit reflect the actual state of the SCL line
  2196.  3    I2C data line (read)
  2197.     this bit reflect the actual state of the SDA line
  2198.  4    enable I2C interface
  2199.     =0 disable bits 0/1, forcing both SCL and SDA to be tri-stated
  2200.  15-5    reserved (unused)
  2201.  20-16    mirrors of bits 4-0
  2202.     (these bits are on the data bus' byte lane 2 to make them accessible
  2203.       via I/O port 00E2h)
  2204. Notes:    see file I2C.LST for details of the I2C device registers accessible
  2205.       through this interface (VPX3220A for Stealth64 Video 2001TV)
  2206.     when the feature connector is disabled on the Stealth64 Video, these
  2207.       bits are connected to the monitor's DDC data and clock lines
  2208.     the official documentation erroneously lists the mirrors in bits 12-8
  2209.       instead of 20-16
  2210. SeeAlso: #M0073,PORT 00E2h,#P0677
  2211. --------V-MB0000000--------------------------
  2212. MEM B000h:0000h - MDA TEXT BUFFER
  2213. Size:    4096 BYTEs
  2214. --------V-MB0000000--------------------------
  2215. MEM B000h:0000h - HGC+ RAMFont-MODE TEXT BUFFER
  2216. Size:    16384 BYTEs
  2217. Note:    in RAMFont Mode 1, the memory is filled with the usual
  2218.       character/attribute pairs; in RAMFont Mode 2, four bits of each
  2219.       'attribute' byte is used to provide 12 bits for specifying the
  2220.       character
  2221. --------V-MB0000000--------------------------
  2222. MEM B000h:0000h - HGC GRAPHICS BUFFER (PAGE 0)
  2223. Size:    32768 BYTEs
  2224. --------V-MB4000000--------------------------
  2225. MEM B400h:0000h - HGC+ RAMFont BUFFER
  2226. Size:    4096 BYTEs
  2227. Notes:    apparently write-only
  2228.     RAMFont Mode 1: 256 characters (8 bits each for char and attribute)
  2229.     RAMFont Mode 2: 3072 characters (12 bits for char, 4 bits for attrib)
  2230.     each character definition is 8 pixels wide (with 9th-column duplication
  2231.       if appropriate) by 8-16 pixels high
  2232. --------V-MB8000000--------------------------
  2233. MEM B800h:0000h - CGA TEXT/GRAPHICS BUFFER
  2234. Size:    16384 BYTEs
  2235. --------V-MB8000000--------------------------
  2236. MEM B800h:0000h - EGA/VGA+ TEXT BUFFER
  2237. Size:    32768 BYTEs
  2238. --------V-MB8000000--------------------------
  2239. MEM B800h:0000h - HGC GRAPHICS BUFFER (PAGE 1)
  2240. Size:    32768 BYTEs
  2241. --------V-MBFF00000--------------------------
  2242. MEM BFF0h:0000h - ET4000/W32 ACL accelerator
  2243. Size:    169 BYTES
  2244.  
  2245. Format of ET4000/W32 memory-mapped registers:
  2246. Offset    Size    Description    (Table M0080)
  2247.  00h    DWORD    MMU Registers: memory base pointer register 0 (see #M0081)
  2248.  04h    DWORD    MMU Registers: memory base pointer register 1 (see #M0081)
  2249.  08h    DWORD    MMU Registers: memory base pointer register 2 (see #M0081)
  2250.  0Ch  7 BYTEs    ???
  2251.  13h    BYTE    MMU Registers: MMU control register (see #M0082)
  2252.  14h 28 BYTEs    ???
  2253.  30h    BYTE    Non-Queued Registers: suspend/terminate
  2254.  31h    BYTE    Non-Queued Registers: operation state (see #M0083) (write-only)
  2255.  32h    BYTE    Non-Queued Registers: sync enable
  2256.  33h    BYTE    ???
  2257.  34h    BYTE    Non-Queued Registers: interrupt mask
  2258.  35h    BYTE    Non-Queued Registers: interrupt status
  2259.  36h    BYTE    Non-Queued Registers: ACL status (read-only)
  2260.         bit 1: read status (RDST) 1=ACL active, queue not empty
  2261.         bit 0: write status (WRST) 1=queue full
  2262.  37h 73 BYTEs    ???
  2263.  80h    DWORD    Queued Registers: pattern address (see #M0084)
  2264.  84h    DWORD    Queued Registers: source address (see #M0084)
  2265.  88h    WORD    Queued Registers: pattern Y offset (see #M0085)
  2266.  8Ah    WORD    Queued Registers: source Y offset (see #M0085)
  2267.  8Ch    WORD    Queued Registers: destination y offset (see #M0085)
  2268.  8Eh    BYTE    Queued Registers: virtual bus size
  2269.  8Fh    BYTE    Queued Registers: X/Y direction (see #M0086)
  2270.  90h    BYTE    Queued Registers: pattern wrap (see #M0087)
  2271.  91h    BYTE    ???
  2272.  92h    BYTE    Queued Registers: source wrap (see #M0087)
  2273.  93h    BYTE    ???
  2274.  94h    WORD    Queued Registers: X position
  2275.  96h    WORD    Queued Registers: Y position
  2276.  98h    WORD    Queued Registers: X count (see #M0088)
  2277.  9Ah    WORD    Queued Registers: Y count (see #M0088)
  2278.  9Ch    BYTE    Queued Registers: routine control (see #M0089)
  2279.  9Dh    BYTE    Queued Registers: reload control
  2280.  9Eh    BYTE    Queued Registers: background ROP for mixing
  2281.  9Fh    BYTE    Queued Registers: foreground ROP for mixing
  2282.  A0h    DWORD    Queued Registers: destination address
  2283.  A4h    DWORD    Queued Registers: internal pattern address
  2284.  A8h    DWORD    Queued Registers: internal source address
  2285.  
  2286. Bitfields for ET4000/W32 memory base pointer register:
  2287. Bit(s)    Description    (Table M0081)
  2288.  31-22    reserved
  2289.  21-0    memory base pointer
  2290. SeeAlso: #M0080
  2291.  
  2292. Bitfields for ET4000/W32 MMU control register:
  2293. Bit(s)    Description    (Table M0082)
  2294.  7    reserved
  2295.  6-4    linear address control (LAC)
  2296.       bit 6: MMU aperture 2
  2297.       bit 5: MMU aperture 1
  2298.       bit 4: MMU aperture 0
  2299.  3    reserved
  2300.  t2-0    aperture type (APT)
  2301.       bit 2: MMU aperture 2
  2302.       bit 1: MMU aperture 1
  2303.       bit 0: MMU aperture 0
  2304. SeeAlso: #M0080 
  2305.  
  2306. Bitfields for ET4000/W32 operation state register:
  2307. Bit(s)    Description    (Table M0083)
  2308.  7-4    reserved
  2309.  3    restart operation after ACL-interruption
  2310.  2-1    reserved
  2311.  0    restore status before ACL-interruption
  2312. SeeAlso: #M0080
  2313.  
  2314. Bitfields for ET4000/W32 memory address register:
  2315. Bit(s)    Description    (Table M0084)
  2316.  31-22    reserved
  2317.  21-0    memory base pointer
  2318. SeeAlso: #M0080
  2319.  
  2320. Bitfields for ET4000/W32 offset register:
  2321. Bit(s)    Description    (Table M0085)
  2322.  15-12    reserved
  2323.  11-0    Y offset
  2324. SeeAlso: #M0080
  2325.  
  2326. Bitfields for ET4000/W32 X/Y direction register:
  2327. Bit(s)    Description    (Table M0086)
  2328.  7-2    reserved
  2329.  1    X direction
  2330.  0    Y direction
  2331. SeeAlso: #M0080
  2332.  
  2333. Bitfields for ET4000/W32 wrap register:
  2334. Bit(s)    Description    (Table M0087)
  2335.  7    reserved
  2336.  6-4    pattern Y wrap
  2337.     000 = 1 line    
  2338.     001 = 2 lines    
  2339.     010 = 4 lines    
  2340.     011 = 8 lines    
  2341.     100 = reserved
  2342.     101 = reserved
  2343.     110 = reserved
  2344.     111 = no wrap 
  2345.  3    reserved
  2346.  2-0    pattern X wrap
  2347.     000 = reserved    
  2348.     001 = reserved    
  2349.     010 = 4 byte    
  2350.     011 = 8 byte    
  2351.     100 = 16 byte    
  2352.     101 = 32 byte    
  2353.     110 = 64 byte    
  2354.     111 = no wrap    
  2355. SeeAlso: #M0080
  2356.  
  2357. Bitfields for ET4000/W32 count register:
  2358. Bit(s)    Description    (Table M0088)
  2359.  15-12    reserved
  2360.  11-0    pixel count
  2361. SeeAlso: #M0080
  2362.  
  2363. Bitfields for ET4000/W32 routine control register:
  2364. Bit(s)    Description    (Table M0089)
  2365.  7-6    reserved               
  2366.  5-4    routing of CPU address (ADRO)       
  2367.     00 don't use CPU address       
  2368.     01 CPU address is destination    
  2369.     10 reserved               
  2370.     11 reserved               
  2371.  3    reserved               
  2372.  2-0    routing of CPU data (DARQ)       
  2373.     000 don't use CPU data       
  2374.     001 CPU data is source data       
  2375.     010 CPU data is mixed data       
  2376.     011 reserved               
  2377.     100 CPU data is x-count       
  2378.     101 CPU data is y-count       
  2379.     10x reserved            
  2380. SeeAlso: #M0080 
  2381. --------V-MC0000000--------------------------
  2382. MEM C000h:0000h - VIDEO BIOS (EGA and newer)
  2383. Size:    varies (usually 16K-24K for EGA, 24K-32K for VGA)
  2384. --------h-mC0000000--------------------------
  2385. MEM C0000000h -    Weitek "Abacus" math coprocessor
  2386. Size:    4096 BYTEs
  2387. --------B-MC8000000--------------------------
  2388. MEM C800h:0000h - HARD DISK BIOS
  2389. Size:    varies (usually 8K or 16K)
  2390. --------V-MC8001C00--------------------------
  2391. MEM C800h:1C00h - IBM XGA, XGA/A - MEMORY-MAPPED REGISTERS
  2392. Range:    any 8K boundary within segments C000h to DFFFh
  2393. Notes:    The XGA memory mapped registers can be assigned to the last 1K block in
  2394.       in each 8K block in the range of C0000h-DFFFFh; the base offset of
  2395.       the 128 memory mapped lcoation for a particular XGA instance is
  2396.       Segment:(1C00h+instance*80h) for each XGA installed in a system
  2397.       (default instance is 6).  The instance number may be read from the
  2398.       XGA's Programmable Option Select registers
  2399.     The XGA/A (PS/2 adapter) uses the 7KB area below the memory-mapped
  2400.       register area for ROM data; the XGA (PS/2 onboard) has included
  2401.       this area in it's video BIOS ROM.
  2402.     Most of the memory mapped registers are from the graphics coprocessor,
  2403.       while the I/O-registers are for the display controller.
  2404. --------V-MC0007FF8--------------------------
  2405. MEM C000h:7FF8h - Matrox MGA Video Adapters - CARD VENDOR ID
  2406. Size:    WORD
  2407. Desc:    contains the PCI vendor ID for the card vendor; this is written into
  2408.       the video controllers PCI subsystem-vendor-ID field
  2409. SeeAlso: MEM C000h:7FFAh,MEM C000h:7FFCh
  2410. --------V-MC0007FFA--------------------------
  2411. MEM C000h:7FFAh - Matrox MGA Video Adapters - HARDWARE REVISION ID
  2412. Size:    BYTE
  2413. SeeAlso: MEM C000h:7FF8h,MEM C000h:7FFCh
  2414. --------V-MC0007FFC--------------------------
  2415. MEM C000h:7FFCh - Matrox MGA Video Adapters - OFFSET OF PINS DATA STRUCTURE
  2416. Size:    WORD
  2417. SeeAlso: INT 10/AX=4F14h"Matrox",#00126,MEM C000h:7FF8h
  2418. --------A-MF0006000--------------------------
  2419. MEM F000h:6000h - IBM PC ROM BASIC
  2420. Size:    32768 BYTEs
  2421. --------B-MF000E000--------------------------
  2422. MEM F000h:E000h - ORIGINAL IBM PC ROM BIOS
  2423. Size:    8192 BYTEs
  2424. --------H-MF000FFF0--------------------------
  2425. MEM F000h:FFF0h - RESET JUMP
  2426. Size:    5 BYTEs
  2427. --------B-MF000FFF5--------------------------
  2428. MEM F000h:FFF5h - ASCII BIOS DATE
  2429. Size:    8 BYTEs
  2430. --------B-MF000FFFD--------------------------
  2431. MEM F000h:FFFDh - OFTEN USED TO ENSURE CORRECT BIOS CHECKSUM
  2432. Size:    BYTE
  2433. --------B-MF000FFFE--------------------------
  2434. MEM F000h:FFFEh - MACHINE TYPE CODE
  2435. Size:    BYTE
  2436. SeeAlso: INT 15/AH=C0h
  2437. --------X-MF000xxx0--------------------------
  2438. MEM F000h:xxx0h - PCI IRQ Routing Table Specification v1.0
  2439. Size:    N paragraphs (N >= 2)
  2440. InstallCheck: scan for the signature string "$PIR" followed by a valid
  2441.       PCI IRQ Routing Table
  2442. Range:    any paragraph boundary within the range F0000h to FFFFFh
  2443.  
  2444. Format of PCI IRQ Routing Table v1.0:
  2445. Offset    Size    Description    (Table M0090)
  2446.  00h  4 BYTEs    signature "$PIR"
  2447.  04h    WORD    version (0100h for v1.0)
  2448.  06h    WORD    table size in bytes
  2449.  08h    BYTE    bus number for PCI Interrupt Router
  2450.  09h    BYTE    device/function number for PCI Interrupt Router
  2451.  0Ah    WORD    bitmap of PCI-exclusive IRQs (bit 0 = IRQ0, etc.)
  2452.  0Ch    WORD    PCI vendor ID for compatible PCI Interrupt Router
  2453.  0Eh    WORD    PCI device ID for compatible PCI Interrupt Router
  2454.  10h    DWORD    Miniport data
  2455.  14h 11 BYTEs    reserved (0)
  2456.  1Fh    BYTE    checksum (set to make 8-bit sum of bytes in entire structure
  2457.           equal 00h)
  2458. --- optional data ---
  2459.  20h 16 BYTEs    first slot entry (see #M0091)
  2460.     ...
  2461.      16 BYTEs    Nth slot entry
  2462.  
  2463. Format of PCI IRQ Routing Table slot entry:
  2464. Offset    Size    Description    (Table M0091)
  2465.  00h    BYTE    PCI bus number
  2466.  01h    BYTE    PCI device number (bits 7-3)
  2467.  02h    BYTE    link value for INTA#
  2468.  03h    WORD    IRQ bitmap for INTA#
  2469.  05h    BYTE    link value for INTB#
  2470.  06h    WORD    IRQ bitmap for INTB#
  2471.  08h    BYTE    link value for INTC#
  2472.  09h    WORD    IRQ bitmap for INTC#
  2473.  0Bh    BYTE    link value for INTD#
  2474.  0Ch    WORD    IRQ bitmap for INTD#
  2475.  0Eh    BYTE    slot number (00h = motherboard, other = vendor-specific)
  2476.  0Fh    BYTE    reserved
  2477. SeeAlso: #M0090,#01260 at INT 1A/AX=B406h
  2478. --------B-MF000xxxx--------------------------
  2479. MEM F000h:xxxxh - AWARD Flash Hook
  2480.  
  2481. Format of AWARD Flash BIOS interface:
  2482. Offset    Size    Description    (Table M0092)
  2483.  00h  8 BYTEs    signature "AWDFLASH"
  2484.  08h    WORD    offset in F000h of FAR function: Get ???
  2485.         Return: BL = ??? (00h)
  2486.  0Ah    WORD    offset in F000h of FAR function: ???
  2487.  0Ch    WORD    offset in F000h of FAR function: ???
  2488.  0Eh    WORD    offset in F000h of FAR function: ???
  2489.  10h    WORD    offset in F000h of FAR function: ???
  2490.  12h    WORD    offset in F000h of FAR function: Disable Shadowing
  2491.  14h    WORD    offset in F000h of FAR function: Enable Shadowing
  2492.  16h    WORD    offset in F000h of FAR function: Get ???
  2493.         Return: DS:SI -> ??? (30 bytes?)
  2494.  18h    WORD    offset in F000h of FAR function: Set ???
  2495.         DS:SI -> ??? (appears to be same as previous function)
  2496. Note:    the AWDFLASH utility copies the ROM from F000h and uses the copy
  2497.       instead of the original F000h:xxxxh addresses
  2498. --------B-MF000xxxx--------------------------
  2499. MEM F000h:xxxxh - Asustek Flash Hook
  2500.  
  2501. Format of Asustek Flash interface:
  2502. Offset    Size    Description    (Table M0093)
  2503.  00h 10 BYTEs    signature "ASUS_FLASH"
  2504.  0Ah  6 BYTEs    blanks (padding)
  2505.  10h    WORD    interface version??? (current PFLASH.EXE requires 0101h)
  2506.  12h    DWORD    -> position-independent code to enable shadowing
  2507.  16h    WORD    size of code pointed at by previous field (<= 0400h)
  2508.  18h    DWORD    -> position-independent code to disable shadowing
  2509.  1Ch    WORD    size of code pointed at by previous field (<= 0400h)
  2510. --------p-Mxxxxxxx0--------------------------
  2511. MEM xxxxh:xxx0h - Advanced Configuration and Power Interface Spec (ACPI) v0.9+
  2512. Range: any paragraph boundary in the first kilobyte of the XBDA, the last
  2513.     kilobyte of conventional memory, or from E000h:0000h to F000h:FFE0h
  2514. Note:    scan paragraph boundaries for the signature string "RSD PTR ", followed
  2515.       by a valid Root System Description Pointer structure (see #M0094)
  2516. SeeAlso: INT 15/AX=E820h
  2517. !!!acpi\acpi10.pdf p.194
  2518.  
  2519. Format of ACPI Root System Description Pointer structure:
  2520. Offset    Size    Description    (Table M0094)
  2521.  00h  8 BYTEs    signature "RSD PTR "
  2522.  08h    BYTE    checksum (entire structure, including this byte, must
  2523.           add up to zero)
  2524.  09h  6 BYTEs    OEM identifier
  2525.  0Fh    BYTE    reserved (0)
  2526.  10h    DWORD    physical address of Root System Description Table (see #M0096)
  2527. SeeAlso: #M0096
  2528.  
  2529. Format of ACPI System Description Table header:
  2530. Offset    Size    Description    (Table M0095)
  2531.  00h  4 BYTEs    signature
  2532.  04h    DWORD    length of table in bytes, including this header
  2533.  08h    BYTE    revision of specification corresponding to signature
  2534.         01h for both v0.9 and v1.0
  2535.  09h    BYTE    checksum (set such that entire table sums to 00h)
  2536.  0Ah  6 BYTEs    OEM identification
  2537.  10h  8 BYTEs    OEM table identifier
  2538.  18h  4 BYTEs    OEM revision number
  2539. ---ACPI v1.0---
  2540.  1Ch  4 BYTEs    vendor ID for table-creation utility used
  2541.  20h  4 BYTEs    revision of table-creation utility
  2542. SeeAlso: #M0094,#M0096,#M0099,#M0097,#M0100,#M0105,#M0108,#M0110
  2543.  
  2544. Format of ACPI Root System Description Table:
  2545. Offset    Size    Description    (Table M0096)
  2546.  00h 36 BYTEs    System Description Table Header (see #M0095)
  2547.         signature "RSDT"
  2548.  24h  N DWORDs    physical addresses of other description tables
  2549.         (see #M0099,#M0097,#M0100,#M0105,#M0108,#M0109)
  2550. Notes:    the number of table pointers is implied by the table length
  2551.       field in the header (at offset 04h)
  2552.     for ACPI v0.9, the header is eight bytes smaller and thus all
  2553.       following offsets are 8 less
  2554. SeeAlso: #M0094
  2555.  
  2556. Format of ACPI Fixed ACPI Description Table:
  2557. Offset    Size    Description    (Table M0097)
  2558.  00h 36 BYTEs    System Description Table Header (see #M0095)
  2559.         signature "FACP"
  2560.  24h    DWORD    physical address of the Firmware ACPI Control Structure
  2561.           (see #M0105)
  2562.  28h    DWORD    physical address of the Differentiated System Description Table
  2563.           (see #M0099)
  2564.  2Ch    BYTE    interrupt mode
  2565.         00h dual PIC (industry-standard AT-type)
  2566.         01h multiple APIC (see #M0100)
  2567.         else reserved
  2568.  2Dh    BYTE    reserved
  2569.  2Eh    WORD    system vector of SCI interrupt
  2570.  30h    DWORD    I/O port address of SMI command port
  2571.  34h    BYTE    value to write to SMI comamnd port to disable SMI ownership
  2572.           of ACPI hardware registers
  2573.  35h    BYTE    value to write to SMI comamnd port to re-enable SMI ownership
  2574.           of ACPI hardware registers
  2575.  36h    BYTE    (v1.0) value to write to SMI command port to enter S4BIOS state
  2576.         00h if not supported
  2577.  37h    BYTE    reserved
  2578.  38h    DWORD    I/O port address of Power Management 1a Event Register Block
  2579.  3Ch    DWORD    I/O port address of Power Management 1b Event Register Block
  2580.         (optional, 00000000h if not supported)
  2581.  40h    DWORD    I/O port address of Power Management 1a Control Register Block
  2582.  44h    DWORD    I/O port address of Power Management 1b Control Register Block
  2583.         (optional, 00000000h if not supported)
  2584.  48h    DWORD    I/O port address of Power Management 2 Control Register Block
  2585.         (optional, 00000000h if not supported)
  2586.  4Ch    DWORD    I/O port address of Power Management Timer Control Reg. Block
  2587.  50h    DWORD    I/O port address of Generic Purpose Event 0 Register Block
  2588.         (optional, 00000000h if not supported)
  2589.  54h    DWORD    I/O port address of Generic Purpose Event 1 Register Block
  2590.         (optional, 00000000h if not supported)
  2591.  58h    BYTE    size of Power Management 1a/1b Event Register Block (>= 4)
  2592.  59h    BYTE    size of Power Management 1a/1b Control Register Block (>= 1)
  2593.  5Ah    BYTE    size of Power Management 2 Control Register Block (>= 1)
  2594.  5Bh    BYTE    size of Power Management Timer Control Register Block (>= 4)
  2595.  5Ch    BYTE    size of Generic Purpose Event 0 Register Block (multiple of 2)
  2596.  5Dh    BYTE    size of Generic Purpose Event 1 Register Block (multiple of 2)
  2597.  5Eh    BYTE    offset within General Purpose Event model for GPE1-based events
  2598.  5Fh    BYTE    reserved
  2599.  60h    WORD    worst-case hardware latency (microseconds) for entering/leaving
  2600.           state C2; >100 if C2 not supported
  2601.  62h    WORD    worst-case hardware latency (microseconds) for entering/leaving
  2602.           state C3; >1000 if C3 not supported
  2603.  64h    WORD    size of contiguous cacheable memory which must be read to flush
  2604.           all dirty lines from a processor's memory cache; use if
  2605.           fixed feature flag WBINVD (see #M0098) is clear
  2606.         0000h if flushing not supported
  2607.  66h    WORD    memory stride size (in bytes) to flush processor's memory cache
  2608.  68h    BYTE    bit index of processor's duty cycle setting within the
  2609.           processor's P_CNT register
  2610.  69h    BYTE    size of processor's duty cycle setting in bits
  2611.  6Ah    BYTE    index within RTC CMOS RAM of the day-of-month alarm value
  2612.         00h = not supported
  2613.  6Bh    BYTE    index within RTC CMOS RAM of the month-of-year alarm value
  2614.         00h = not supported
  2615.  6Ch    BYTE    index within RTC CMOS RAM of the century alarm value
  2616.         00h = not supported
  2617.  6Dh    BYTE    reserved
  2618.  6Eh    DWORD    fixed feature flags (see #M0098)
  2619. SeeAlso: #M0094,CMOS 7Dh,CMOS 7Eh,CMOS 7Fh
  2620.  
  2621. Bitfields for ACPI Fixed Feature Flags:
  2622. Bit(s)    Description    (Table M0098)
  2623.  0    WBINVD instruction is correctly supported by processor
  2624.  1    WBINVD instruction flushes all caches and maintains coherency, but
  2625.       does not guarantee invalidation of all caches
  2626.  2    all processors support C1 sleep state
  2627.  3    C2 sleep state is configured to work on multiprocessor system
  2628. ---v0.9---
  2629.  4    power button is handled as a generic feature
  2630.  5    RTC wake-up state is not supported in fixed register space
  2631.  6    TMR_VAL size
  2632.     =0 24 bits
  2633.     =1 32 bits
  2634.  7-31    reserved
  2635. ---v1.0---
  2636.  4    power button is handled as a control method device
  2637.  5    =0 sleep button is handled as a fixed feature programming mode
  2638.     =1 control method device, or no sleep button
  2639.  6    RTC wake-up state is not supported in fixed register space
  2640.  7    RTc alarm can wake system from S4 state
  2641.  8    TMR_VAL size
  2642.     =0 24 bits
  2643.     =1 32 bits
  2644.  9-31    reserved
  2645. SeeAlso: #M0097
  2646.  
  2647. Format of ACPI Differentiated System Description Table:
  2648. Offset    Size    Description    (Table M0099)
  2649.  00h 36 BYTEs    System Description Table Header (see #M0095)
  2650.         signature "DSDT"
  2651.  24h        complex byte stream; refer to ACPI document and software
  2652. SeeAlso: #M0094
  2653.  
  2654. Format of ACPI Multiple APIC Description Table:
  2655. Offset    Size    Description    (Table M0100)
  2656.  00h 36 BYTEs    System Description Table Header (see #M0095)
  2657.         signature "APIC"
  2658.  24h    DWORD    physical address of the local APIC in each processor's address
  2659.           space
  2660.  28h    DWORD    multiple-APIC flags (see #M0101)
  2661.  2Ch 12N BYTEs    APIC structures (see #M0102,#M0104)
  2662.         first byte of each is type, second is length; types other than
  2663.           00h and 01h are currently reserved and should be skipped
  2664. SeeAlso: #M0094
  2665.  
  2666. Bitfields for ACPI Multiple APIC Description Table flags:
  2667. Bit(s)    Description    (Table M0101)
  2668.  0    system contains AT-compatible dual 8259 interrupt controllers in
  2669.       addition to APICs
  2670.  1-31    reserved (0)
  2671. SeeAlso: #M0100
  2672.  
  2673. Format of ACPI Local APIC Structure:
  2674. Offset    Size    Description    (Table M0102)
  2675.  00h    BYTE    structure type (00h = Processor Local APIC)
  2676.  01h    BYTE    length of this structure (0Ch for v0.9, 08h for v1.0)
  2677.  02h    BYTE    processor ID
  2678.  03h    BYTE    processor's local APIC ID
  2679. ---v0.9---
  2680.  04h    DWORD    physical address of APIC
  2681.  08h    DWORD    flags (TBD)
  2682. --v1.0---
  2683.  04h    DWORD    flags (see #M0103)
  2684. SeeAlso: #M0100,#M0104
  2685.  
  2686. Bitfields for ACPI Local APIC flags:
  2687. Bit(s)    Description    (Table M0103)
  2688.  0    APIC enabled
  2689.  1-31    reserved (0)
  2690. SeeAlso: #M0102
  2691.  
  2692. Format of ACPI I/O APIC Structure:
  2693. Offset    Size    Description    (Table M0104)
  2694.  00h    BYTE    structure type (00h = Processor Local APIC)
  2695.  01h    BYTE    0Ch (length of this structure)
  2696.  02h    BYTE    I/O APIC's ID
  2697.  03h    BYTE    reserved (0)
  2698.  04h    DWORD    physical address of the APIC
  2699.  08h    DWORD    number of first system interrupt vector for APIC
  2700. SeeAlso: #M0100,#M0102
  2701.  
  2702. Format of ACPI Firmware ACPI Control Structure:
  2703. Offset    Size    Description    (Table M0105)
  2704.  00h  4 BYTEs    signature "FACS"
  2705.  04h    DWORD    length of entire structure in bytes (>= 40h)
  2706.  08h    DWORD    value of system's hardware signature at last boot
  2707.  0Ch    DWORD    real-mode ACPI OS waking vector
  2708.         if nonzero, control is transferred to this address on next BIOS
  2709.           POST
  2710.  10h    DWORD    global lock (see #M0107)
  2711.  14h    DWORD    (v1.0) firmware control structure flags (see #M0106)
  2712.  18h 44 BYTEs    reserved (0)
  2713. Notes:    this structure is located on a 64-byte boundary anywhere in the
  2714.       first 4GB of memory
  2715.     the BIOS is required to omit the address space containing this
  2716.       structure from system memory in the system's memory map
  2717. SeeAlso: #M0094,INT 15/AX=E820h
  2718.  
  2719. Bitfields for ACPI Firmware Control Structure Feature flags:
  2720. Bit(s)    Description    (Table M0106)
  2721.  0    system supports S4BIOS_REQ
  2722.     =0 operating system must save/restore memory state in order to go to S4
  2723.  1-31    reserved (0)
  2724. SeeAlso: #M0105
  2725.  
  2726. Bitfields for ACPI Embedded Controller Arbitration Structure:
  2727. Bit(s)    Description    (Table M0107)
  2728.  0    request for Global Lock ownership is pending
  2729.  1    Global Lock is currently owned
  2730.  2-31    reserved
  2731. SeeAlso: #M0105
  2732.  
  2733. Format of ACPI Persistent System Description Table:
  2734. Offset    Size    Description    (Table M0108)
  2735.  00h 36 BYTEs    System Description Table Header (see #M0095)
  2736.         signature "PSDT"
  2737.  24h        complex byte stream; refer to ACPI document and software
  2738. SeeAlso: #M0094
  2739.  
  2740. Format of ACPI Secondary System Description Table:
  2741. Offset    Size    Description    (Table M0109)
  2742.  00h 36 BYTEs    System Description Table Header (see #M0095)
  2743.         signature "SSDT"
  2744.  24h        complex byte stream; refer to ACPI document and software
  2745. SeeAlso: #M0094
  2746.  
  2747. Format of ACPI Smart Battery Description Table:
  2748. Offset    Size    Description    (Table M0110)
  2749.  00h 36 BYTEs    System Description Table Header (see #M0095)
  2750.         signature "SBST"
  2751.  24h    DWORD    energy level in mWh at which system should warn user
  2752.  28h    DWORD    energy level in mWh at which system should automatically enter
  2753.           sleep state
  2754.  2Ch    DWORD    energy level in mWh at which system should perform an emergency
  2755.           shutdown
  2756. SeeAlso: #M0094
  2757. ----------Mxxxxxxx0---------------------------
  2758. MEM xxxxh:xxx0h - BIOS32 Service Directory
  2759. InstallCheck:    scan paragraph boundaries E000h to FFFFh for signature string
  2760.     "_32_", followed by a valid header structure (see #F0021)
  2761. SeeAlso: CALL xxxxh:xxxxh"BIOS32"
  2762. ----------Mxxxxxxx0---------------------------
  2763. MEM xxxxh:xxx0h - Desktop Management Interface / System Management BIOS
  2764. InstallCheck:    scan paragraph boundaries F000h to FFFFh for signature string
  2765.        "_DMI_", followed by a valid header structure (see #M0111,#M0112)
  2766.  
  2767. Format of Desktop Management Interface entry-point structure:
  2768. Offset    Size    Description    (Table M0111)
  2769.  00h  5 BYTEs    signature "_DMI_"
  2770.  05h    BYTE    checksum of this structure (forces 8-bit sum of bytes to 00h)
  2771.  06h    WORD    total length of SMBIOS structure table, in bytes
  2772.  08h    DWORD    32-bit physical address of read-only SMBIOS structure table
  2773.         (see #F0059)
  2774.  0Ch    WORD    number of SMBIOS structures
  2775.  0Eh    BYTE    BCD SMBIOS revision (high nybble = major, low = minor)
  2776. !!!ftp://download.intel.com/ial/wfm/smbios.pdf
  2777. SeeAlso: #M0112
  2778.  
  2779. Format of System Management BIOS entry-point structure:
  2780. Offset    Size    Description    (Table M0112)
  2781.  00h  4 BYTEs    signature "_SM_"
  2782.  04h    BYTE    checksum of this structure (forces 8-bit sum of bytes to 00h)
  2783.  05h    BYTE    length of structure in bytes (1Fh for v2.1+)
  2784.  06h    BYTE    major version of specification
  2785.  07h    BYTE    minor version of specification (01h = vX.1, 16h = vX.22)
  2786.  08h    WORD    size of largest SMBIOS structure (see also #F0046)
  2787.  0Ah    BYTE    revision of this data structure
  2788.         00h SMBIOS v2.1-2.3
  2789.         01h-FFh reserved for future versions
  2790.  0Bh  5 BYTEs    revision-specific data (currently unused)
  2791.  10h  5 BYTEs    intermediate anchor string "_DMI_"
  2792.  15h    BYTE    checksum of intermediate entry-point structure
  2793.         (forces 8-bit sum of bytes 10h-1Eh to 00h)
  2794.  16h    WORD    total length of SMBIOS structure table, in bytes
  2795.  18h    DWORD    32-bit physical address of read-only SMBIOS structure table
  2796.         (see #F0059)
  2797.  1Ch    WORD    number of SMBIOS structures
  2798.  1Eh    BYTE    BCD SMBIOS revision (high nybble = major, low = minor)
  2799.         00h if specification version only given in bytes 06h/07h
  2800. BUG:    due to an error in the v2.1 specification, some implementations might
  2801.       indicate a length of 1Eh bytes instead of 1Fh
  2802. SeeAlso: #M0111
  2803. ----------Mxxxxxxx0--------------------------
  2804. MEM xxxxh:xxx0h - Multiprocessor Specification - FLOATING POINTER STRUCTURE
  2805. InstallCheck: scan paragraph boundaries for the signature string "_MP_",
  2806.       followed by a valid floating pointer structure (see #M0113)
  2807. Range: any paragraph boundary in the first kilobyte of the XBDA, the last
  2808.     kilobyte of conventional memory, or from F000h:0000h to F000h:FFE0h
  2809. SeeAlso: MEM FEE00000h
  2810.  
  2811. Format of Multiprocessor Specification Floating Pointer structure:
  2812. Offset    Size    Description    (Table M0113)
  2813.  00h  4 BYTEs    signature "_MP_"
  2814.  04h    DWORD    physical address of MP configuration table (see #M0114)
  2815.         00000000h if no configuration table
  2816.  08h    BYTE    length of this structure in paragraphs (currently 01h)
  2817.  09h    BYTE    revision of MP specification supported
  2818.         01h = v1.1
  2819.         04h = v1.4
  2820.  0Ah    BYTE    checksum (8-bit sum of entire structure, including this
  2821.           byte, must equal 00h)
  2822.  0Bh    BYTE    MP feature byte 1: system configuration type
  2823.         00h: MP configuration table present
  2824.         nonzero: default configuration implemented by system
  2825.  0Ch    BYTE    MP feature byte 2
  2826.         bit 7: IMCR present
  2827.         bits 6-0: reserved (0)
  2828.  0Dh  3    BYTEs    MP feature bytes 3-5 (reserved, must be 00h)
  2829.  
  2830. Format of Multiprocessor Specification configuration table header:
  2831. Offset    Size    Description    (Table M0114)
  2832.  00h  4 BYTEs    signature "PCMP"
  2833.  04h    WORD    length of base configuration table in bytes, including
  2834.           this header
  2835.  06h    BYTE    revision of MP specification supported
  2836.         01h = v1.1
  2837.         04h = v1.4
  2838.  07h    BYTE    checksum of entire base configuration table
  2839.  08h  8 BYTEs    OEM identifier
  2840.  10h 12 BYTEs    product ID
  2841.  1Ch    DWORD    physical address to OEM-defined configuration table
  2842.         00000000h if not present
  2843.  20h    WORD    size of base OEM table in bytes (0000h if not present)
  2844.  22h    WORD    number of entries in variable portion of base table
  2845.  24h    DWORD    address of local APIC (see also MEM FEE0h:0020h)
  2846.  28h    WORD    length of extended entries following end of base table
  2847.           (in bytes)
  2848.  2Ah    BYTE    checksum for extended table entries (includes only
  2849.           extended entries following base table)
  2850.  2Ch    var    configuration table entries (see #M0115)
  2851. SeeAlso: #M0113
  2852.  
  2853. Format of Multiprocessor Specification configuration table entries:
  2854. Offset    Size    Description    (Table M0115)
  2855.  00h    BYTE    entry type code
  2856.         00h processor
  2857.         01h bus
  2858.         02h I/O APIC
  2859.         03h I/IO interrupt assignment
  2860.         04h local interrupt assignment
  2861.         80h system address space mapping
  2862.         81h bus hierarchy descriptor
  2863.         82h compatibility bus address space modifier
  2864. ---processor---
  2865.  01h    BYTE    local APIC identifier
  2866.  02h    BYTE    local APIC version
  2867.  03h    BYTE    CPU flags
  2868.         bit 0: processor usable
  2869.         bit 1: bootstrap processor
  2870.  04h    WORD    CPU type
  2871.         bits 11-8: CPU family
  2872.         bits 7-4: CPU model
  2873.         bits 3-0: stepping
  2874.         (bits 11-0 all set indicate non-Intel-compatible CPU)
  2875.  06h  2 BYTEs    unused
  2876.  08h    DWORD    feature flags (as returned by Pentium CPUID instruction)
  2877.  0Ch  8 BYTEs    reserved
  2878. ---bus---
  2879.  01h    BYTE    bus ID (assigned sequentially from 00h by BIOS)
  2880.  02h  6 BYTEs    bus type (blank-padded ASCII string) (see #M0116)
  2881. ---I/O APIC---
  2882.  01h    BYTE    APIC identifier
  2883.  02h    BYTE    APIC version
  2884.  03h    BYTE    I/O APIC flags
  2885.         bit 0: enabled
  2886.         bits 7-1: reserved
  2887.  04h    DWORD    base address for APIC
  2888. ---I/O,local interrupt assignment---
  2889.  01h    BYTE    interrupt type
  2890.         00h vectored interrupt (from APIC)
  2891.         01h NMI
  2892.         02h system management interrupt
  2893.         03h vectored interrupt (from external PIC)
  2894.  02h    BYTE    APIC control (see #M0117)
  2895.  03h    BYTE    unused
  2896.  04h    BYTE    source bus identifier
  2897.  05h    BYTE    source bus IRQ
  2898.  06h    BYTE    destination I/O APIC identifier
  2899.  07h    BYTE    destination I/O APIC interrupt pin number
  2900. ---system address space mapping---
  2901.  01h    BYTE    entry length (14h)
  2902.  02h    BYTE    bus ID
  2903.  03h    BYTE    address type (00h I/O, 01h memory, 02h prefetch)
  2904.  04h    QWORD    starting address of region visible to bus
  2905.  0Ch    QWORD    length of region visible to bus
  2906. ---bus hierarchy descriptor---
  2907.  01h    BYTE    entry length (08h)
  2908.  02h    BYTE    bus ID
  2909.  03h    BYTE    bus information
  2910.         bit 0: subtractive decoding
  2911.  04h    BYTE    ID of parent bus
  2912.  05h  3 BYTEs    reserved
  2913. ---compatibility bus address space modifier---
  2914.  01h    BYTE    entry length (08h)
  2915.  02h    BYTE    bus ID
  2916.  03h    BYTE    address modifier
  2917.         bit 0: remove address ranges in predefined range list from
  2918.               bus's address space
  2919.  04h    DWORD    number indicating predefined address space range to be removed
  2920.         00h ISA-compatible I/O range (x100h-x3FFh and aliases)
  2921.         01h VGA-compatible I/O range (x3B0h-x3BBh,x3C0h-x3DFh,aliases)
  2922. SeeAlso: #M0114
  2923.  
  2924. (Table M0116)
  2925. Values for Multiprocessor Specification bus name:
  2926.  "CBUS"        Corollary CBus
  2927.  "CBUSII"    Corollary CBus II
  2928.  "EISA"
  2929.  "FUTURE"    IEEE FutureBus
  2930.  "INTERN"    internal bus
  2931.  "ISA"
  2932.  "MBI"        Multibus I
  2933.  "MBII"        Multibus II
  2934.  "MCA"        Microchannel
  2935.  "MPI"
  2936.  "MPSA"
  2937.  "NUBUS"    Apple Macintosh NuBus
  2938.  "PCI"
  2939.  "PCMCIA"
  2940.  "TC"        DEC TurboChannel
  2941.  "VL"        VESA Local Bus
  2942.  "VME"        VMEbus
  2943.  "XPRESS"    Express System Bus
  2944. SeeAlso: #M0115
  2945.  
  2946. Bitfields for Multiprocessor Specification APIC control:
  2947. Bit(s)    Description    (Table M0117)
  2948.  1-0    input signal polarity
  2949.     00 conforms to bus specification
  2950.     01 active high
  2951.     10 reserved
  2952.     11 active low
  2953.  3-2    trigger mode
  2954.     00 conforms to bus specification
  2955.     01 edge-triggered
  2956.     10 reserved
  2957.     11 level-triggered
  2958. SeeAlso: #M0115
  2959. --------H-mFEC00000--------------------------
  2960. MEM FEC00000h - Pentium - 82379AB I/O APIC - I/O REGISTER SELECT
  2961. Size:    DWORD
  2962. Desc:    bits 7-0 of the I/O Register Select memory location specify which
  2963.       of the APIC's registers appears in the I/O Window at FExxx010h
  2964. Range:    the Multiprocessor Specification calls for I/O APICs to be memory-
  2965.       mapped on 4K boundaries between FEC00000h and FEDFC000h; the Intel
  2966.       82379AB I/O APIC can be memory-mapped on any 1K boundary within
  2967.       FEC0000h-FEC0F800h
  2968. Note:    this memory-mapped register is also supported by the Intel 82093AA
  2969.       I/O APIC
  2970. SeeAlso: MEM FEC00010h,MEM FEE00000h,MEM xxxxh:xxx0h"Multiprocessor"
  2971. --------H-mFEC00010--------------------------
  2972. MEM FEC00010h - Pentium - 82379AB I/O APIC - I/O WINDOW
  2973. Size:    DWORD
  2974. Range:    the Multiprocessor Specification calls for I/O APICs to be memory-
  2975.       mapped on 4K boundaries between FEC00000h and FEDFC000h
  2976. Note:    this memory-mapped register is also supported by the Intel 82093AA
  2977.       I/O APIC
  2978. SeeAlso: MEM FEC00010h
  2979.  
  2980. (Table M0118)
  2981. Values for Intel 82379AB/82093AA I/O APIC registers:
  2982.  00h    APIC ID
  2983.  01h    APIC version (read-only)
  2984.     bits 31-24: reserved
  2985.     bits 23-16: maximum redirection entry
  2986.     bits 15-8: reserved
  2987.     bits 7-0: APIC version (11h for 82093AA)
  2988.  02h    APIC arbitration ID (read-only)
  2989.     bits 31-28: reserved
  2990.     bits 27-24: arbitration ID
  2991.     bits 23-0: reserved
  2992.  10h-11h    redirection table entry 0 (10h=low DWORD, 11h=high DWORD)
  2993.  12h-13h    redirection table entry 1 (see !!!)
  2994.  ...
  2995.  2Eh-2Fh    redirection table entry 15
  2996. ---82093AA only---
  2997.  30h-31h    redirection table entry 16
  2998.  ...
  2999.  3Eh-3Fh    redirection table entry 23
  3000.  
  3001. Bitfields for APIC redirection table entry:
  3002. Bit(s)    Description    (Table M0119)
  3003.  63-56    destination
  3004. !!!29056601.pdf pg. 10
  3005.  55-17    reserved
  3006.  16    interrupt mask
  3007.  15    trigger mode
  3008.  14    remote IRR (read-only)
  3009.  13    interrupt input pin polarity
  3010.  12    delivery status (read-only)
  3011.  11    destination mode
  3012.  10-8    delivery mode
  3013.  7-0    interrupt vector (10h-FEh)
  3014. --------H-mFEE00000--------------------------
  3015. MEM FEE00000h - Pentium - LOCAL APIC
  3016. Size:    4096 BYTEs
  3017. Notes:    the Advanced Programmable Interrupt Controller built into
  3018.       multiprocessor-capable Pentiums (P54C, etc. -- basically 75MHz and
  3019.       faster Pentiums) maps its registers into the top of the physical
  3020.       address space on data reads and writes, but not on code reads;
  3021.       data accesses to the APIC registers do not cause external bus
  3022.       cycles
  3023.     the APIC's registers are only visible when the APIC is enabled (which
  3024.       occurs at CPU reset when external data lines contain proper signals);
  3025.       all accesses to APIC registers should use 32-bit reads or writes, as
  3026.       8-bit and 16-bit accesses may produce unpredictable results
  3027.     the PentiumPro (P6) permits the address at which the local APIC
  3028.       appears to be changed with Model-Specific Register 0000001Bh
  3029. SeeAlso: MEM FEC00000h,MEM FEE00020h,MEM xxxxh:xxx0h"Multiprocessor"
  3030. SeeAlso: MSR 0000001Bh
  3031. --------H-mFEE00020--------------------------
  3032. MEM FEE00020h - Pentium - LOCAL APIC - LOCAL APIC ID REGISTER
  3033. Size:    DWORD
  3034. SeeAlso: MEM FEE00030h
  3035. --------H-mFEE00030--------------------------
  3036. MEM FEE00030h - Pentium - LOCAL APIC - LOCAL APIC VERSION REGISTER
  3037. Size:    DWORD
  3038. Note:    read-only
  3039. SeeAlso: MEM FEE00020h
  3040. --------H-mFEE00040--------------------------
  3041. MEM FEE00040h - Pentium - LOCAL APIC - RESERVED
  3042. SeeAlso: MEM FEE00000h
  3043. --------H-mFEE00050--------------------------
  3044. MEM FEE00050h - Pentium - LOCAL APIC - RESERVED
  3045. SeeAlso: MEM FEE00000h
  3046. --------H-mFEE00060--------------------------
  3047. MEM FEE00060h - Pentium - LOCAL APIC - RESERVED
  3048. SeeAlso: MEM FEE00000h
  3049. --------H-mFEE00070--------------------------
  3050. MEM FEE00070h - Pentium - LOCAL APIC - RESERVED
  3051. SeeAlso: MEM FEE00000h
  3052. --------H-mFEE00080--------------------------
  3053. MEM FEE00080h - Pentium - LOCAL APIC - TASK PRIORITY REGISTER (TPR)
  3054. Size:    DWORD
  3055. --------H-mFEE00090--------------------------
  3056. MEM FEE00090h - Pentium - LOCAL APIC - ARBITRATION PRIORITY REGISTER (APR)
  3057. Size:    DWORD
  3058. Note:    read-only
  3059. --------H-mFEE000A0--------------------------
  3060. MEM FEE000A0h - Pentium - LOCAL APIC - END OF INTERRUPT REGISTER (EOI)
  3061. Size:    DWORD
  3062. Note:    write-only
  3063. --------H-mFEE000A0--------------------------
  3064. MEM FEE000A0h - Pentium - LOCAL APIC - PROCESSOR PRIORITY REGISTER (PPR)
  3065. Size:    DWORD
  3066. Note:    read-only
  3067. SeeAlso: MEM FEE00000h
  3068. --------H-mFEE000B0--------------------------
  3069. MEM FEE000B0h - Pentium - LOCAL APIC - RESERVED
  3070. SeeAlso: MEM FEE00000h
  3071. --------H-mFEE000C0--------------------------
  3072. MEM FEE000C0h - Pentium - LOCAL APIC - REMOTE READ REGISTER
  3073. Size:    DWORD
  3074. Note:    read-only
  3075. --------H-mFEE000D0--------------------------
  3076. MEM FEE000D0h - Pentium - LOCAL APIC - LOGICAL DURATION REGISTER (LDR)
  3077. Size:    DWORD
  3078. SeeAlso: MEM FEE00000h
  3079. --------H-mFEE000E0--------------------------
  3080. MEM FEE000E0h - Pentium - LOCAL APIC - DESTINATION FORMAT REGISTER (DFR)
  3081. Size:    DWORD
  3082.     bits 27-0: read-only
  3083.     bits 31-28: read-write
  3084. --------H-mFEE000F0--------------------------
  3085. MEM FEE000F0h - Pentium - LOCAL APIC - SPURIOUS INTERRUPT VECTOR REGISTER
  3086. Size:    DWORD
  3087.     bits 3-0, read-only
  3088.     bits 9-4, read/write
  3089. --------H-mFEE00100--------------------------
  3090. MEM FEE00100h - Pentium - LOCAL APIC - IN-SERVICE REGISTER (ISR)
  3091. Size:    128 BYTEs
  3092. Note:    read-only
  3093. SeeAlso: MEM FEE00200h
  3094. --------H-mFEE00180--------------------------
  3095. MEM FEE00180h - Pentium - LOCAL APIC - TRIGGER MODE REGISTER (TMR)
  3096. Size:    128 BYTEs
  3097. Note:    read-only
  3098. SeeAlso: MEM FEE00000h
  3099. --------H-mFEE00200--------------------------
  3100. MEM FEE00200h - Pentium - LOCAL APIC - INTERRUPT REQUEST REGISTER (IRR)
  3101. Size:    128 BYTEs
  3102. Note:    read-only
  3103. SeeAlso: MEM FEE00100h
  3104. --------H-mFEE00280--------------------------
  3105. MEM FEE00280h - Pentium - LOCAL APIC - ERROR STATUS REGISTER
  3106. Size:    DWORD
  3107. Note:    read-only
  3108.  
  3109. Bitfields for Pentium APIC error status register:
  3110. Bit(s)    Description    (Table M0120)
  3111.  0    send checksum error
  3112.  1    receive checksum error
  3113.  2    send accept error
  3114.  3    receive accept error
  3115.  4    reserved
  3116.  5    send illegal vector
  3117.  6    receive illegal vector
  3118.  7    illegal register address
  3119.  31-8    reserved
  3120. --------H-mFEE00300--------------------------
  3121. MEM FEE00300h - Pentium - LOCAL APIC - INTERRUPT COMMAND REGISTER (ICR)
  3122. Size:    DWORD
  3123. Note:    this is the low half of the 64-bit ICR
  3124. SeeAlso: MEM FEE00310h,#M0121
  3125.  
  3126. Bitfields for Pentium APIC Interrupt Command Register:
  3127. Bit(s)    Description    (Table M0121)
  3128.  7-0    interrupt vector number
  3129.  10-8    delivery mode (see #M0122)
  3130.  11    destination mode
  3131.  12    delivery status (read-only)
  3132.     1 = transfer pending
  3133.  13    reserved
  3134.  14    level (0 = INIT Level Deassert message, 1 = anything else)
  3135.  15    trigger mode (1)
  3136.  17-16    remote read status (read-only)
  3137.  19-18    destination shorthand
  3138.     00 as specified by destination field
  3139.     01 self
  3140.     10 all including self
  3141.     11 all except self
  3142.  55-20    reserved
  3143.  63-56    destination for interrupt request or message
  3144. SeeAlso: #M0124
  3145.  
  3146. (Table M0122)
  3147. Values for Pentium APIC delivery mode:
  3148.  000b    fixed
  3149.  001b    lowest-priority
  3150.  010b    SMI
  3151.  011b    remote read
  3152.  100b    NMI
  3153.  101b    INIT
  3154.  110b    start up
  3155.  111b    reserved
  3156. SeeAlso: #M0121
  3157. --------H-mFEE00310--------------------------
  3158. MEM FEE00310h - Pentium - LOCAL APIC - INTERRUPT COMMAND REGISTER (ICR)
  3159. Size:    DWORD
  3160. Note:    this is the high half of the 64-bit ICR
  3161. SeeAlso: MEM FEE00300h,#M0121
  3162. --------H-mFEE00320--------------------------
  3163. MEM FEE00320h - Pentium - LOCAL APIC - LOCAL VECTOR TABLE ENTRY 0 (TIMER)
  3164. Size:    DWORD
  3165. SeeAlso: MEM FEE00350h,MEM FEE00370h,MEM FEE003E0h,INT 70h
  3166.  
  3167. Bitfields for Pentium APIC timer local vector entry:
  3168. Bit(s)    Description    (Table M0123)
  3169.  7-0    interrupt vector number
  3170.  11-8    reserved
  3171.  12    delivery status (read-only)
  3172.     1 = interrupt being sent to APIC
  3173.  15-13    reserved
  3174.  16    interrupt delivery disabled
  3175.  17    timer mode (0=one-shot, 1=periodic)
  3176.  31-18    reserved
  3177. SeeAlso: #M0125,#M0124
  3178. --------H-mFEE00330--------------------------
  3179. MEM FEE00330h - Pentium - LOCAL APIC - RESERVED
  3180. SeeAlso: MEM FEE00000h
  3181. --------H-mFEE00340--------------------------
  3182. MEM FEE00340h - Pentium - LOCAL APIC - RESERVED
  3183. SeeAlso: MEM FEE00000h
  3184. --------H-mFEE00350--------------------------
  3185. MEM FEE00350h - Pentium - LOCAL APIC - LOCAL VECTOR TABLE ENTRY 1 (LINT0)
  3186. Size:    DWORD
  3187. SeeAlso: MEM FEE00320h,MEM FEE00360h
  3188.  
  3189. Bitfields for Pentium APIC LINTx local vector entry:
  3190. Bit(s)    Description    (Table M0124)
  3191.  7-0    interrupt vector number
  3192.  10-8    delivery mode
  3193.     000 fixed
  3194.     100 NMI
  3195.     111 external interrupt (8259A-compatibility)
  3196.  11    reserved
  3197.  12    delivery status (read-only)
  3198.     1 = interrupt being sent to APIC
  3199.  13    interrupt pin is active low
  3200.  14    remote IRR
  3201.  15    trigger mode
  3202.     0 edge-sensitive
  3203.     1 level-sensitive
  3204.  16    interrupt delivery disabled
  3205.  31-17    reserved
  3206. SeeAlso: #M0123
  3207. --------H-mFEE00360--------------------------
  3208. MEM FEE00360h - Pentium - LOCAL APIC - LOCAL VECTOR TABLE ENTRY 2 (LINT1)
  3209. Size:    DWORD
  3210. SeeAlso: MEM FEE00350h,MEM FEE00370h,#M0124
  3211. --------H-mFEE00370--------------------------
  3212. MEM FEE00370h - Pentium - LOCAL APIC - LOCAL VECTOR TABLE ENTRY 3 (Error)
  3213. Size:    DWORD
  3214. SeeAlso: MEM FEE00320h,MEM FEE00370h
  3215. --------H-mFEE00380--------------------------
  3216. MEM FEE00380h - Pentium - LOCAL APIC - INITIAL COUNT REGISTER (ICR) TIMER
  3217. Size:    DWORD
  3218. Desc:    timer start value, which together with the Divide Configuration
  3219.       Register also determines its period when periodic mode has been
  3220.       selected
  3221. SeeAlso: MEM FEE00000h,MEM FEE00390h
  3222. --------H-mFEE00390--------------------------
  3223. MEM FEE00390h - Pentium - LOCAL APIC - CURRENT COUNT REGISTER (CCR) TIMER
  3224. Size:    DWORD
  3225. Desc:    current timer count; when this value reaches zero, an interrupt is
  3226.       generated
  3227. Note:    read-only
  3228. SeeAlso: MEM FEE00380h
  3229. --------H-mFEE003A0--------------------------
  3230. MEM FEE003A0h - Pentium - LOCAL APIC - RESERVED
  3231. SeeAlso: MEM FEE00000h
  3232. --------H-mFEE003B0--------------------------
  3233. MEM FEE003B0h - Pentium - LOCAL APIC - RESERVED
  3234. SeeAlso: MEM FEE00000h
  3235. --------H-mFEE003C0--------------------------
  3236. MEM FEE003C0h - Pentium - LOCAL APIC - RESERVED
  3237. SeeAlso: MEM FEE00000h
  3238. --------H-mFEE003D0--------------------------
  3239. MEM FEE003D0h - Pentium - LOCAL APIC - RESERVED
  3240. SeeAlso: MEM FEE00000h
  3241. --------H-mFEE003E0--------------------------
  3242. MEM FEE003E0h - Pentium - LOCAL APIC - TIMER DIVIDE CONFIGURATION REGISTER
  3243. Size:    DWORD
  3244. SeeAlso: MEM FEE00000h,MEM FEE00320h
  3245.  
  3246. Bitfields for Pentium APIC timer divide configuration:
  3247. Bit(s)    Description    (Table M0125)
  3248.  3,1,0    divisor
  3249.     000 divide by 2
  3250.     001 by 4
  3251.     010 by 8
  3252.     ...
  3253.     110 by 128
  3254.     111 by 1
  3255.  2    zero (0)
  3256.  31-4    reserved
  3257. Note:    the divisor determines the timer's time base relative to the processor
  3258.       clock
  3259. SeeAlso: #M0123
  3260. ----------MFFFF0010--------------------------
  3261. MEM FFFFh:0010h - HIGH MEMORY AREA (HMA)
  3262. Size:    65520 BYTEs
  3263. --------!---CONTRIBUTORS---------------------
  3264. Robin Walker    <rdhw@cus.cam.ac.uk> ORIGINAL FILE
  3265. Wim Osterholt    <wim@djo.wtm.tudelft.nl> or Wim Osterholt 2:512/56
  3266.     EHD floppy = 'KEGAN 4.0M Floppy Drive Controller.',
  3267.              'ACME FX4-K7tb2 v:2.5 11/5/91'
  3268. Stanley Appel    <appel@stack.urc.tue.nl>
  3269. Matthias Paul    <mpaul@ibh.rwth-aachen.de>
  3270. --------!---Admin----------------------------
  3271. Highest Table Number = M0125
  3272. --------!---FILELIST-------------------------
  3273. Please redistribute all of the files comprising the interrupt list (listed at
  3274. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  3275. quartet of archives named INTER60A through INTER60D (preferably the original
  3276. authenticated PKZIP archives), and the utility and hypertext programs in
  3277. three additional archives called INTER60E.ZIP to INTER60G.ZIP.
  3278.  
  3279. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3280. --------!---CONTACT_INFO---------------------
  3281. Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
  3282. FIDO: Ralf Brown 1:129/26.1
  3283.